一、this关键字
this是什么呢?
this就是一个变量,用在方法中,可以拿到当前类的对象。
我们看下图所示代码,通过代码来体会这句话到底是什么意思。哪一个对象调用方法方法中的this就是哪一个对象

this有什么用呢?
通过this在方法中可以访问本类对象的成员变量。
二、构造器
什么是构造器?
构造器其实是一种特殊的方法,但是这个方法没有返回值类型,方法名必须和类名相同。
-
作用:创建对象 Student stu = new Student();
-
格式:
public class 类名{
修饰符 类名( 参数 ) {
}
}
-
功能:主要是完成对象数据的初始化
构造器分为有参构造和无参构造
如下图所示:

宝子们,写构造器也是有快捷键的哦
如下:
Fn + Atl + ins
构造器的特点?
在创建对象时,会调用构造器。
也就是说 new Student()就是在执行构造器,当构造器执行完了,也就意味着对象创建成功。
宝子们,我们记住一句话:
new 对象就是在执行构造方法
构造器的应用场景?
其实构造器就是用来创建对象的。可以在创建对象时给对象的属性做一些初始化操作。

构造器方法有那些注意事项?
1)在设计一个类时,如果不写构造器,Java会自动生成一个无参数构造器。
2)一旦定义了有参数构造器,Java就不再提供无参数构造器,此时建议自己加一个无参数构造器。
三、封装性
1.什么是封装呢?
所谓封装,就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理数据的方法,都设计到一个对象中去。(面向对象包含三大特征: 封装, 多态, 继承)
封装的设计规范用8个字总结,就是:合理隐藏、合理暴露
2. 封装在代码中的体现
一般我们在设计一个类时,会将成员变量隐藏,然后把操作成员变量的方法对外暴露。
这里需要用到一个修饰符,叫private,被private修饰的变量或者方法,只能在本类中被访问
接下来,我来给你们一张代码图,来帮助你们更好的理解

如果你想给Student对象的score属性赋值,得调用对外暴露的方法setScore(int score),在这个方法中可以对调用者传递过来的数据进行一些控制,更加安全。
当你想获取socre变量的值时,就得调用对外暴露的另一个方法 getScore()
四、实体JavaBean
1. 什么是实体类?
实体类就是一种特殊的类,它需要满足下面的要求:
1)这个类的成员变量都要私有,并且要对外提供相应的get行行行,setxxx方法
2)类中那个必须有一个公共的无参构造器
2.JavaBean实体类有什么特点?
JavaBean实体类仅仅只用来封装数据,只提供对数据进行存和取的方法
3.JavaBean实体类的应用场景?
JavaBean实体类,只负责封装数据,而把数据处理的操作放在其他类中,以实现数据和数据处理相分离。
五、面向对象综合案例
宝子们,下面我将给大家展示一个面向对象的综合案例,以便帮助大家更好的理解呦~
1. 第一步:定义电影类
package test;
//定义电影类
public class Movie {
private int id;
private String name;
private double price;
private double score;
private String director;
private String actor;
private String info;
//无参构造器
public Movie (){
}
//有参构造器
public Movie(int id,String name,double price,double score,String director,String actor,String info){
this.id = id;
this.name = name;
this.score = score;
this.price = price;
this.actor = actor;
this.info = info;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getDirector() {
return director;
}
public void setDirector(String director) {
this.director = director;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
2. 第二步:定义电影操作类
package test;
//定义电影操作类
public class MovieOperator {
//因为系统中有多部电影,所以电影操作类中,需要有一个movie数组
private Movie[] movies;
//?
public MovieOperator(Movie[] movies) {
this.movies = movies;
}
//展示系统全部电影信息 movies = [m1,m2,m3,…]
public void printMovies() {
System.out.println("—-系统全部电影信息如下;——–");
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
System.out.println("编号:" + m.getId());
System.out.println("名称:" + m.getName());
System.out.println("价格:" + m.getPrice());
System.out.println("————————-");
}
}
//2,根据电影的编号询问出电影的详细信息并展示
public void searchMovieById(int id) {
for (int i = 0; i < movies.length; i++) {
Movie m = movies[i];
if (m.getId() == id){
System.out.println("该电影详情如下:");
System.out.println("编号:"+m.getId());
System.out.println("名称:"+m.getName());
System.out.println("价格:"+m.getPrice());
System.out.println("得分:"+m.getScore());
System.out.println("导演:"+m.getDirector());
System.out.println("主演"+m.getActor());
System.out.println("其他信息"+m.getInfo());
return;//已经找到了电影信息,没必要再执行了
}
}
System.out.println("没有该电影信息~");
}
}
3. 第三步:定义测试类
package test;
import java.util.Scanner;
public class MovieTest {
public static void main(String[] args) {
//创建一个Movie类型的数组
Movie[] movies = new Movie[4];
//创建4个电影对象,分别存储到movies数组中
movies[0] = new Movie(1, "水门桥", 38.9, 9.8, "徐克", "吴京", "12万人想看");
movies[1] = new Movie(2, "出拳吧", 39, 7.8, "唐晓白", "田雨", "3.5万人想看");
movies[2] = new Movie(3, "月球陨落", 42, 7.9, "罗兰", "贝瑞", "17.9万人想看");
movies[3] = new Movie(4, "一点就到家", 35, 8.7, "许宏宇", "刘昊然", "10.8万人想看");
//创建电影操作类
MovieOperator movieOperator = new MovieOperator(movies);
// 键盘录入对象
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("——-电影信息系统——-");
System.out.println("1.查询所有电影信息");
System.out.println("2.根据电影编号id查询当前电影详情");
System.out.println("请输入操作命令: ");
int num = sc.nextInt(); // 1 2 3
// 判断
switch (num) {
case 1:
// 查询所有电影信息
movieOperator.printMovies();
break;
case 2:
// 让用户输入对应的编号id
System.out.println("请您输入要查询的电影编号: ");
int id = sc.nextInt();
//根据电影编号id查询当前电影详情
movieOperator.searchMovieById(id);
break;
default:
}
System.out.println("您输入的命令有误, 请重新输入…");
}
}
}
到这里,电影信息系统就完成了。 小伙伴们,自己尝试写一下吧!!
六、成员变量和局部变量的区别
成员变量是在类中,方法外,局部变量常见于方法中
成员变量有默认值,不需要初始化;局部变量则没有,使用之前必须完成赋值
成员变量作用域于整个对象;局部变量作用于所归属的大括号中
希望我的总结能帮助的宝子们哦~
如果觉得不错,记得点赞收藏啊
如果有不懂的的地方或者一些提议,可以下方评论哦😮
我会尽量回复的宝子们的
OK,宝子们,我们下篇文章见哦~😊






