Java学习07|面向对象编程(oop)

本文详细介绍了面向对象编程的入门、深入理解,包括面向对象的好处、对象的定义、类与对象的关系、执行原理、this的用法、构造器、封装、实体JavaBean以及成员变量和局部变量的区别。通过实例代码展示了如何创建和操作对象,以及面向对象编程的实际应用。
摘要由CSDN通过智能技术生成

目录

一、面向对象快速入门

二、深刻认识面向对象

1、面向对象的好处

2、程序中的对象到底是什么

3、对象是怎么出来的

4、类和对象的关系

5、定义类的格式

三、对象在计算机中的执行原理

四、类和对象的一些注意事项

五、其他语法:this

1、使用this

2、this的执行原理

3、this的应用场景

六、其他语法:构造器

1、定义

2、注意事项​编辑

七、其他语法:封装 

1、定义

2、封装的设计规范

 八、其他语法:实体JavaBean

1、什么是实体类

2、应用场景

九、补充知识:成员变量、局部变量的区别

十、面向对象编程综合实例


一、面向对象快速入门

用对象封装具体的数据,再调用对象的方法对数据进行处理的方式,就叫做面向对象编程。

二、深刻认识面向对象

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的图示。注意左图是class文件
注意事项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("您输入的命令有问题!!!");
            }
        }

    }

}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值