目录
一、面向对象快速入门
用对象封装具体的数据,再调用对象的方法对数据进行处理的方式,就叫做面向对象编程。
二、深刻认识面向对象
1、面向对象的好处
2、程序中的对象到底是什么
对象本质上是一种特殊的数据结构,相当于现实世界中的一张表。
3、对象是怎么出来的
先用class设计对象,在用new创建出对象,new多少次就有多少表,也就有多少对象
4、类和对象的关系
5、定义类的格式
三、对象在计算机中的执行原理
执行到Student s1 = new Student();这行,先把Student类加载到方法区中,然后
1、每次new学生对象时,现在堆内存中开辟一块区域代表一个而学生对象,相当于在堆中产生了一个表,表里存了变量信息(此时值是null或0),然后还会记录一个地址,这个地址指向方法区的Student类,方便之后用到对象里的方法。
2、变量s1里面记录的是相应对象的地址;
3、执行到赋值时,给相应堆内存中的表赋值;执行到方法时,通过类的地址执行方法。
【补充】如何识别引用类型变量
四、类和对象的一些注意事项
五、其他语法:this
1、使用this
2、this的执行原理
s1对象调用方法的时候,会把自己对象的地址传给方法区对应类中的this接收
不管之后对象有多少个,哪个对象调用this,该对象的this就会指向这个对象,也就是拿到哪个对象
3、this的应用场景
用来解决对象的成员变量与方法内部变量的名称一样时候,导致访问冲突问题的
六、其他语法:构造器
1、定义
构造器是一种特殊的方法:①名字和所在类名字相同;②不能写返回值类型。
Student s1 = new Student()这个操作不仅仅是创建一个Student类,后面的小括号()也是在触发对应的构造器。
2、注意事项
七、其他语法:封装
1、定义
2、封装的设计规范
合理隐藏,合理暴露
使用private关键字修饰的成员变量和方法,只能在这个类中使用
1️⃣对成员变量的合理隐藏和合理暴露:把成员变量(private)放在方法(public)里,使用getxxx金额setxxx方法对成员变量进行取用
2️⃣对方法的合理隐藏和合理暴露:使用public和private即可
八、其他语法:实体JavaBean
1、什么是实体类
实体类的作用:创建对象,封装数据的。
实体类只是一个保存数据的java类
2、应用场景
九、补充知识:成员变量、局部变量的区别
十、面向对象编程综合实例
Movie.java
package com.itheima.dianying;
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.price = price;
this.score = score;
this.director = director;
this.actor = actor;
this.info = info;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(double price) {
this.price = price;
}
public void setScore(double score) {
this.score = score;
}
public void setDirector(String director) {
this.director = director;
}
public void setActor(String actor) {
this.actor = actor;
}
public void setInfo(String info) {
this.info = info;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
public double getScore() {
return score;
}
public String getDirector() {
return director;
}
public String getActor() {
return actor;
}
public String getInfo() {
return info;
}
}
movieOperate.java
package com.itheima.dianying;
public class movieOperate {
private Movie[] movies;
public movieOperate(Movie[] movies){
this.movies = movies;
}
/** 1、展示系统全部信息 */
public void printMovies(){
System.out.println("----------下面是全部电影的信息-----------");
for (int i = 0; i < movies.length; i++) {
System.out.println("电影id是:"+movies[i].getId());
System.out.println("电影名字是:"+movies[i].getName());
System.out.println("电影价格是:"+movies[i].getPrice());
System.out.println("电影分数是:"+movies[i].getScore());
System.out.println("电影导演是:"+movies[i].getDirector());
System.out.println("电影演员是:"+movies[i].getActor());
System.out.println("电影其他信息是:"+movies[i].getInfo());
System.out.println("----------------------------------");
}
}
/** 1、根据电影编号查询电影全部信息 */
public void searchMovieById(int id){
for (int i = 0; i < movies.length; i++) {
if(movies[i].getId() == id){
System.out.println("----------该电影详情如下:-----------");
System.out.println("电影id是:"+movies[i].getId());
System.out.println("电影名字是:"+movies[i].getName());
System.out.println("电影价格是:"+movies[i].getPrice());
System.out.println("电影分数是:"+movies[i].getScore());
System.out.println("电影导演是:"+movies[i].getDirector());
System.out.println("电影演员是:"+movies[i].getActor());
System.out.println("电影其他信息是:"+movies[i].getInfo());
return;
}
}
System.out.println("没有该电影信息!!!");
}
}
Test.java
package com.itheima.dianying;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//1、设计一个电影类
//2、设计一个电影操作类
//3、准备全部电影数据
Movie[] movies = new Movie[4];
movies[0] = new Movie(1,"水门桥",38.9,9.8,"徐克","吴京","12万人想看");
movies[1] = new Movie(2,"出圈吧",39,7.8,"聊唐柏","天宇","9.7万人想看");
movies[2] = new Movie(3,"月球陨落",37.9,7.9,"罗兰","贝瑞","19.7万人想看");
movies[3] = new Movie(4,"一点就到家",32.6,7.2,"许宏宇","刘昊然","10.6万人想看");
//4、展示全部电影和查询对应id电影信息
Scanner sc = new Scanner(System.in);
while (true) {
movieOperate operate = new movieOperate(movies);
System.out.println("==电影信息系统==");
System.out.println("1、查询全部电影信息;2、根据id查询某个电影的详细信息并显示");
System.out.println("请您输入操作符");
int comannd = sc.nextInt();
switch (comannd) {
case 1 :
operate.printMovies();
break;
case 2:
System.out.println("请输入查询电影的id");
int id = sc.nextInt();
operate.searchMovieById(id);
break;
default:
System.out.println("您输入的命令有问题!!!");
}
}
}
}