java的面向对象编程(oop)概述及案例

发布时间:2024年01月06日

前言:

学到了面向对象编程,整理下相关知识点。打牢基础,daydayup!

?面向对象基础概述

1,什么是面向对象,面向对象的思考逻辑是什么?

面向对象就是把任何事物都看成一个又一个对象。思考逻辑为万物皆对象,谁的数据谁处理。

2,什么是对象?

对象是一种特殊的数据结构。同时,对象也称为类的具体实例。对象==实例

3,如何得到对象?

通过class(也就是类)创建出对象,同时class(类)也被称为对象的设计图(或者对象的模板)。java中必须先定义类,才能得到对象。

4,什么是面向对象编程?

通过创建或者寻找对象过来编程解决问题。

5,为什么使用面向对象编程?

符合人类的思维逻辑,使编程更加简单,更加直观。

通过类创建对象

定义的格式

public class 类名{
        1,成员变量(代表属性,一般是名词):数据类型 名称

        2,成员方法(代表行为,一般是动词)

        3,构造器

        4,代码块
        
        5,内部类
}

定义的注意事项

1,建议使用有意义的名称,满足驼峰模式

2,一个java文件中可以创建多个类,但是只能一个类是public修饰的。同时public修饰的类名必须成为java代码的文件名称,否则报错。

?如图

具体如何定义

?1,定义成员变量(属性)

格式:修饰符 数据类型 变量名称 =初始值;

:成员变量非必要不建议给初始化值。不定义初始化值会存在默认值,

默认值的规则:整型是0,浮点型是0.0,引用类型是null,布尔型是false

2,定义成员方法(行为)

?格式如下:

修饰符 返回值类型 方法名(形参列表){
        需要执行的代码
          return 返回值;
 
}

定义示例:

public class Study {
    private String name;
    private double score;

    public void print (){
        System.out.println(name + "的成绩为" + score);

    }

}

?创建对象?

格式

类名 对象名 =new 构造器();

对象怎么使用

格式

对象名.成员变量

对象名.成员方法

注:创建对象时,对象会调用构造器?

构造器:

构造器是一种特殊的方法,名字必须与所在类的名字一模一样。同时不需要写返回值类型,如下图:

?

构造器的作用

初始化一个类的对象,并返回对象的地址

格式

修饰符 类名(形参){……}

构造器的分类

无参构造器:初始化一个类的对象,并返回这个对象的地址,里面数据都是默认值

有参数构造器:初始化一个类的对象,并返回这个对象的地址,同时可以为对象赋值

如何使用构造器

类名 对象名 = new 构造器(参数)

如下图:上面为无参构造器,下面为有参构造器?

注意:

1,类在设计时,如果不写构造器,java会为类自动生成一个无参构造器

2,当设计了一个有参构造器后,java就不会自动设计无参构造器了,需要再手动设计一个无参构造器

this关键字?

?this的作用

代表了当前对象的地址,可以访问当前对象的成员变量和成员方法。

this的使用场景

1,可以用于方法中(谁调用方法,this就代表谁)如下

public class Study {
    String name;
     double score;
    public void print (String name,double score){
        System.out.println(this.name + "的成绩为" + this.score +";"+name +"的成绩为"+score);
    }
}

结果:this。name所指向的是lala,而形参变量里的name指向的是ku。

2,可以用于有参构造器中(赋值初始值),如下

public Study(String name,double score){
        this.name = name;
        this.score = score;
    }

?封装

1,什么是封装

用类设计对象处理某一个事物的数据时,把要处理的数据,以及处理这些数据的方法涉及到一个对象中去的过程称为封装。

2,封装的核心思想是什么

合理隐藏,合理暴露

3,代码层面如何控制对象的成员公开或隐藏

公开成员:可以使用public(公开)进行修饰

隐藏成员:使用private(私有/隐藏)进行修饰

当设置成private时,便无法进行处理

需要提供方法才可以使用

目的:在方法里可以给值施加限定,防止值被轻易篡改。?

实体类?(标准java bean)

实体类是一种特殊的类,成员变量必须私有,而且要提供get/set方法;同时必须有无参数构造器。

例:如下图,隐藏成员变量,提供get/set方法,并含有无参构造器

使用目的

实体类只负责数据存取,而对数据的处理交给其他类完成。以实现数据和数据业务处理相分离。

例:如下图,Car为实体类(负责数据存取),CarOperator为操作类(负责功能),CarDemo负责组合,运行结果如右边。

案例:模拟电影票查询系统

目标需求:输入按键1,可以输出全部电影信息。输入按键2,可以查询电影信息。输入其他按键返回界面。

实验思路:1,创建一个实体类用于记录信息;2创建一个操作类用于实现显示和查询功能;3,在main方法中运行查看结果

1,实体类:

public class Moive {
    private int no;
    private String name;
    private String director;
    private double score;

    public Moive() {
    }

    public Moive(int no, String name, String director, double score) {
        this.no = no;
        this.name = name;
        this.director = director;
        this.score = score;
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
}

?2,操作类

public class MoiveOperator {
      private  Moive[] moives ;
      public  MoiveOperator(){}
       public MoiveOperator(Moive [] moives){
           this.moives = moives;
       }
       public void Operator(){
           System.out.println("电影目录如下");
           for (int i = 0; i < moives.length; i++) {
               System.out.println("编号:"+moives[i].getNo());
               System.out.println("电影名:"+moives[i].getName());
               System.out.println("导演:"+moives[i].getDirector());
               System.out.println("评分:"+moives[i].getScore());
               System.out.println("----------------------");
           }
       }
       public void Operatorid(int id){

           for (int i = 0; i < moives.length; i++) {
                 Moive m = moives[i];
               if (id == m.getNo()){
                   System.out.println(m.getNo());
                   System.out.println(m.getName());
                   System.out.println(m.getDirector());
                   System.out.println(m.getScore());
                   System.out.println("-------------");
                   return;
               }
           }
                   System.out.println("没有相关电影");
                   System.out.println("----------");
       }
}

运行测试:

public class MoiveDemo {
    public static void main(String[] args) {

        Moive [] m1 = new Moive[4];
        m1 [0]=new Moive(1,"开心做账","lala",9.9);
        m1 [1]=new Moive(2,"开心学习","la",9.8);
        m1 [2]=new Moive(3,"开心放弃","lal",9.7);
        m1 [3]=new Moive(4,"开心愤怒","l",9.6);
        MoiveOperator m2 = new MoiveOperator(m1);
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("欢迎来到电影系统");
            System.out.println("1为查询全部信息");
            System.out.println("2为查询电影");
            int bu=sc.nextInt();
            switch(bu){
                case 1:
                    m2.Operator();
                    break;
                case 2:
                    System.out.println("请输入编号:");
                    int id =sc.nextInt();
                    m2.Operatorid(id);
                    break;
                default:
                    System.out.println("请重新输入");
                    System.out.println("---------");
            }

        }

    }
}

实验结果:运行成功

?

整理结束!撒花!!!!?

?

?

?

?

文章来源:https://blog.csdn.net/l822099133/article/details/135422289
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。