【Day7:JAVA面向对象的初级使用】

目录

  • 1、类和对象
    • 1.1 类的介绍
    • 1.2 类和对象的关系
    • 1.3 类的组成
  • 2、对象内存图
    • 2.1 单个对象内存图
    • 2.2 两个对象内存图
    • 2.3 两个引用指向相同内存图
  • 3、成员变量和局部变量
    • 3.1 成员变量和局部变量的区别
  • 4、this关键字
    • 4.1 this可以解决的问题
    • 4.2 this介绍
    • 4.3 this内存图
    • 4.4 this总结
  • 5、构造方法
    • 5.1 构造方法概述
    • 5.2 构造方法的作用
    • 5.3 构造方法的注意事项
    • 5. 4 构造方法的执行流程
  • 6、封装
    • 6.1 面向对象三大特征
    • 6.2 封装的设计规范
    • 6.3 权限修饰符
  • 7、标准JavaBean
  • 8、综合案例

在这里插入图片描述

1、类和对象

1.1 类的介绍

在这里插入图片描述

1.2 类和对象的关系

在这里插入图片描述

1.3 类的组成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、对象内存图

2.1 单个对象内存图

在这里插入图片描述

注意点:一段代码要开始运行时,先将源文件编译成字节码文件,然后主方法对应的字节码文件进入方法区,接着主方法进入栈内存,当需要创建新的对象时,也就是new对象时,就会在堆内存中开辟此对象对应的空间。
面试时,需要能回答上这三个内存区域的用法。

2.2 两个对象内存图

2.3 两个引用指向相同内存图

在这里插入图片描述

3、成员变量和局部变量

3.1 成员变量和局部变量的区别

在这里插入图片描述

4、this关键字

4.1 this可以解决的问题

在这里插入图片描述

局部变量和成员变量重名了,但是还要用成员变量,那么就可以使用this关键字了。
this的作用:可以调用本类的成员(变量和方法)。
在这里插入图片描述

4.2 this介绍

在这里插入图片描述

也就是说:谁来调用我,我就代表谁。

4.3 this内存图

在这里插入图片描述

4.4 this总结

在这里插入图片描述

5、构造方法

5.1 构造方法概述

在这里插入图片描述

5.2 构造方法的作用

在这里插入图片描述

package com.itheima.oop;public class Student {String name;int age;public Student(){System.out.println("我是无参构造方法!!!");}public Student(String name, int age){this.name = name;this.age = age;System.out.println("我是有参构造方法!!!");}
}package com.itheima.test;
import com.itheima.oop.Student;public class StudentTest {public static void main(String[] args) {Student s1 = new Student();//不传参数,则创建时调用无参构造Student s2 = new Student("马四", 16);//传参数,则创建时调用有参构造}
}输出:
我是无参构造方法!!!
我是有参构造方法!!!

5.3 构造方法的注意事项

在这里插入图片描述

在这里插入图片描述

5. 4 构造方法的执行流程

在这里插入图片描述

6、封装

6.1 面向对象三大特征

在这里插入图片描述

继承和多态放后面面向对象高级课程学习。今天只学习封装。

在这里插入图片描述

  • 案例一:
    在这里插入图片描述

  • 案例二:
    在这里插入图片描述

6.2 封装的设计规范

在这里插入图片描述

注:隐藏和暴露都是针对要使用对象的使用者而言。那如何隐藏,如何暴露呢?看下面权限修饰符知识。

6.3 权限修饰符

在这里插入图片描述
在这里插入图片描述

使用set方法和get方法,合理隐藏、合理暴露:
在这里插入图片描述

7、标准JavaBean

JavaBean是指:实体类,即封装数据的类。

在这里插入图片描述

8、综合案例

在这里插入图片描述

代码:

  • Main.java
package com.itheima.movieSystem.domain;public class Main {public static void main(String[] args) {System.out.println("==============电影信息系统==============");//1、登录验证Login login = new Login();login.login();//2、菜单选择SelectMovieInfoHandler selectMovieInfoHandler = new SelectMovieInfoHandler();selectMovieInfoHandler.menu();}
}
  • SelectMovieInfoHandler.java
package com.itheima.movieSystem.domain;
import com.itheima.movieSystem.vo.Movie;
import java.util.Scanner;public class SelectMovieInfoHandler {public void menu() {//加载数据库Movie[] data = getData();loop:while (true) {Scanner sc = new Scanner(System.in);System.out.println("1.查询全部电影信息");System.out.println("2.根据id查询电影信息");System.out.println("3.退出");int choose = sc.nextInt();switch (choose) {case 1:queryAllMovie(data);break ;case 2:queryMovieById(data);break ;case 3:System.out.println("欢迎下次观看!");break loop;default:System.out.println("没有此选项!");break ;}}}public Movie[] queryAllMovie(Movie[] data){System.out.println("全部电影如下:");for (Movie datum : data) {System.out.println(datum.toString());}return data;}public Movie queryMovieById(Movie[] data){System.out.println("请输入要查询电影的id:");Scanner sc = new Scanner(System.in);int id = sc.nextInt();for (Movie datum : data) {if (datum.getId() == id) {System.out.println(datum.toString());return datum;}}return null;}public Movie[] getData(){Movie[] arr = new Movie[2];Movie movie1 = new Movie();movie1.setId(1);movie1.setName("大力王");movie1.setScore(91);arr[0] = movie1;Movie movie2 = new Movie();movie2.setId(2);movie2.setName("魔法大师");movie2.setScore(95);arr[1] = movie2;return arr;}
}
  • Login.java
package com.itheima.movieSystem.domain;
import java.util.Random;
import java.util.Scanner;public class Login {//获取验证码public String getVerificationCode() {//初始化验证码词典库char[] arr = getContents();//生成随机验证码Random r = new Random();
//        char[] verificationCodeArr = new char[5];StringBuilder verificationCodeArr = new StringBuilder();for (int i = 0; i < 5; i++) {verificationCodeArr.append(arr[r.nextInt(arr.length)]);}return verificationCodeArr.toString();}private char[] getContents() {//初始化验证码词典库char[] arr = new char[62];for (int i = 0; i < arr.length; i++) {if (i < 26){arr[i] = (char)('a' + i);}else if (i <52){arr[i] = (char)('A' + i - 26);}else {arr[i] = (char)('0' + i - 52);}
//            System.out.print(arr[i] + " ");}return arr;}public void login(){while (true){Login login = new Login();String verificationCode = login.getVerificationCode();System.out.println("系统生成的验证码:" + verificationCode);System.out.println("请输入验证码:");Scanner sc = new Scanner(System.in);String printVerificationCode = sc.next();if (check(verificationCode, printVerificationCode)){System.out.println("登录成功,欢迎来到电影信息系统!");break;}else {System.out.println("输入的验证码错误,请重新输入!");}}}public boolean check(String verificationCode, String printVerificationCode){return verificationCode.equals(printVerificationCode);}
}
  • Movie.java
package com.itheima.movieSystem.vo;public class Movie {private String name;//电影名称private double score;//电影评分private int id;//电影idpublic Movie() {}public Movie(String name, double score, int id) {this.name = name;this.score = score;this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic String toString() {return "电影:{" +"名称='" + name + '\'' +", 得分=" + score +'}';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器输入URL到网页显示之间发生了什么

记&#xff1a; DNS(Domain Name System,域名系统)就是根据域名来查找对应的IP地址的一个关键系统。 域名层级关系&#xff1a; 根域名服务器&#xff08;.&#xff09;顶级域名服务器&#xff08;.com&#xff09;权威域名服务器&#xff08;server.com&#xff09; 首先浏…

5.22R语言初步学习-2(使用包、绘图)

本文逻辑可能有些凌乱&#xff0c;是在数据处理的使用中学习R语言&#xff0c;所以用到的一些包、函数等都直接写在这了&#xff0c;主要就是处理数据的一个过程可能会用到的部分函数。 包的使用 R语言的使用&#xff0c;很大程度上是借助各种各样的R包的辅助&#xff0c;从某…

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题&#xff0c;2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起&#xff08;中国消防2019.12.应急管理部消防救援局官方微博&#xff09;&#xff0c;违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

MVSnet 代码详解(pytorch)

大致过一下MVSnet 论文中核心的点对应代码应该怎么写。 forward 函数需要 照片&#xff0c;映射矩阵&#xff0c;以及深度值。 照片的shape是 &#xff08;1&#xff0c;5,3&#xff0c;1184,1600&#xff09;代表着1个batch,5张图片&#xff0c;然后一次是每张图片的channel和…

Android低代码开发 - MenuPanel的源码剖析和基本使用

看了我上篇文章Android低代码开发 - 像启蒙和乐高玩具一样的MenuPanel 之后&#xff0c;本篇开始讲解代码。 源代码剖析 首先从MenuPanelItemRoot讲起。 package dora.widget.panelinterface MenuPanelItemRoot {/*** 菜单的标题。** return*/var title: String?fun hasTit…

大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ PostgreSQL 全球开发小组 发布于 2024-05-23 PostgreSQL 全球开发小组宣布&#xff0c;PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预…

IEN在Web3.0中的性能与安全优势

随着Web3.0的快速发展&#xff0c;优化网络基础设施变得至关重要。智能生态网络&#xff08;Intelligent Ecological Network, IEN&#xff09;作为新一代网络架构&#xff0c;在提升性能与增强安全方面展现出巨大潜力。本文将深入探讨IEN在Web3.0中的技术优势&#xff0c;并展…

高效利用键盘上的 caps lock(大写键)实现中英切换

先看效果 在中文输入环境中&#xff0c;Caps Lock 键经常被忽视&#xff0c;占据了键盘上的黄金位置却很少派上用场。接下来&#xff0c;我将介绍如何将这个闲置的键合理利用&#xff0c;让它变得更加实用。 第一步 设置&#xff1a; 我以五笔为例&#xff1a; 1.输入法默认…

docker如何拉取redis最新镜像并运行

要拉取Docker Hub上最新版本的Redis镜像&#xff0c;您可以使用以下命令&#xff1a; docker pull redis:latest 这里的latest标签会自动获取Redis镜像的最新版本。如果您希望指定一个确切的版本号&#xff0c;可以直接使用该版本号替换latest。例如&#xff0c;要拉取Redis版…

高铁VR虚拟全景展示提升企业实力和形象

步入VR的神奇世界&#xff0c;感受前所未有的汽车展示体验。VR虚拟现实技术以其独特的沉浸式模拟&#xff0c;让你仿佛置身于真实展厅之中&#xff0c;尽情探索汽车的每一处细节。 一、定制化展示&#xff0c;随心所欲 VR汽车虚拟展厅打破空间束缚&#xff0c;让汽车制造商能够…

力扣1809 没有广告的剧集(postgresql)

需求 Table: Playback ----------------- | Column Name | Type | ----------------- | session_id | int | | customer_id | int | | start_time | int | | end_time | int | ----------------- 该表主键为&#xff1a;session_id &#xff08;剧集id&#xff09; customer_…

调试时JSON库一直提示 PDB找不到 使用需要对象文件来进行调试的 /DEBUG:Fastlink生成的

最近调试时一直提示上面的提示框&#xff0c;很是烦躁。 为什么会出现这个错误呢&#xff0c;我一直使用的是/DEBUG。出现原因没有找出来&#xff0c;理论上市使用了/DEBUG:Fastlink这个模式才会出&#xff0c;但是就是一直在报这个错误。 /DEBUG&#xff08;生成调试信息&am…

同旺科技 FLUKE ADPT 隔离版发布 ---- 3

所需设备&#xff1a; 1、FLUKE ADPT 隔离版 内附链接&#xff1b; 应用于&#xff1a;福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于&#xff1a;福禄克Fluke 15B / 17B / 18B 总体连接&#xff1a; 连接线&#xff0c;根据自己实际需求而定&#xff1b; …

flink程序本地运行:No ExecutorFactory found to execute the application

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Exception in thread "main" java.lang.IllegalStateException: No ExecutorFactory found to execute the application. at org.apache.flink.core.execution.DefaultExecutorServiceLoader.getE…

微软开发者大会:编程进入自然语言时代、“AI员工”闪亮登场

当地时间周二&#xff0c;美国科技公司微软召开年度Build开发者大会。在CEO纳德拉的带领下&#xff0c;微软各个产品团队再一次展现出惊人的执行力&#xff0c;在发布会上又拿出了接近50个新产品或功能更新。 整场发布会持续了接近两个小时&#xff0c;在这里挑选了一些投资者…

web自动化文件上传弹框处理

目录 文件上传介绍文件上传处理Alert 弹窗介绍Alert 弹窗处理 课程目标 掌握文件上传的场景以及文件上传的处理方式。掌握 Alert 弹窗的场景以及 Alert 弹窗的处理方式。 思考 碰到需要上传文件的场景&#xff0c;自动化测试应该如何解决&#xff1f; 文件上传处理 找到文…

el-switch自动触发更新事件

比如有这样一个列表&#xff0c;允许修改单条数据的状态。希望在更改el-switch状态时能够有个弹框做二次确认&#xff0c;没问题&#xff0c;el-switch已经帮我们想到了&#xff0c;所以它提供了beforeChange&#xff0c;根据beforeChange的结果来决定是否修改状态。一般确认修…

计算机缺失ffmpeg.dll如何修复,五种详细的修复教程分享

当你在使用电脑过程中&#xff0c;突然遇到系统或软件弹出提示信息&#xff0c;告知“ffmpeg.dll文件丢失”怎么办&#xff1f;当电脑提示ffmpeg.dll丢失时&#xff0c;可能会导致一些应用程序无法正常运行或出现错误提示。下面我将介绍5种解决电脑提示ffmpeg.dll丢失的方法。 …

神秘山洞惊现AI绘画至宝Stable Diffusion残卷

最近听到不少大宗门纷纷发声&#xff1a;随着AI神器的现世“程序员职业将不复存在”&#xff0c;“设计图将要失业”。 至此&#xff0c;不少修士开始担忧起来&#xff0c;现出世的AI神器会不会取代掉我辈修士。 其实&#xff0c;至女娲天神创造人类以来&#xff0c;在这漫漫…

Android软件渲染流程

Android软件渲染流程 一.渲染流程1.VSync信号的监听2.VSync信号触发绘制 二.渲染原理1.画布的获取1.1 渲染缓存的初始化1.2 graphics::Canvas的创建1.3 graphics::Canvas与渲染缓存的绑定1.3.1 SkBitmap的初始化1.3.2 SkiaCanvas与SkBitmap的绑定1.3.3 SkCanvas的创建 2.矩形的…