Java面向对象


设计对象并使用

  • 类(设计图):是对象共同特征的描述
  • 对象:是真实存在的具体实例

在Java中,必须先设计类,才能创建对象并使用

注意事项:

  • 类名首字母建议大写,满足“驼峰模式”,不能用关键字,必须是合法标识符
  • 一个Java文件中可以定义多个class类,但只能一个类是public修饰,而且public修饰的类名必须成为代码文件名
  • 成员变量的完整定义格式是: 修饰符 数据类型 变量名称 = 初始化值; 一般无需指定初始化值,存在默认值

构造器

作用

  • 定义在类中的,可以用于初始化一个类的对象,并返回对象的地址

格式

修饰符 类名(形参列表){
	...
}

调用构造器得到对象的格式

类 变量名称 = new 构造器;

分类和作用

  • 无参数构造器:初始化对象时(默认存在的),成员变量的数据均采用默认值
  • 有参数构造器:在初始化对象的时候,同时可以接收参数为对象进行赋值

注意事项

  • 任何类定义出来,默认自带了无参数构造器,写不写都有
  • 一旦定义了有参数构造器,那么无参数构造器就没有了,如果还想用无参数构造器,此时就需要自己手写一个无参数构造器

this关键字

  • 可以出现在构造器、方法中,代表当前对象的地址

作用

  • 可以用于指定访问当前对象的成员变量、成员方法

以this出现在有参数构造器中的用法为例,此时的this是当前对象的地址,就完美的将构造器中的name赋值给当前对象的成员变量name

public class Car {
    String name;
    double price;
    
	public Car(String name, double price){
        this.name = name;
        this.price = price;
    }
}

封装

  • 面向对象的三大特征:封装、继承、多态
  • 作用:告诉我们,如何正确设计对象的属性和方法
  • 原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为

如何封装

  • 一般会把成员变量使用private隐藏起来,对外就不能直接访问了
  • 提供public修饰的getter和setter方法暴露其取值和赋值

JavaBean

  • 也可以称为实体类,其对象可以用于在程序中封装数据

标准JavaBean须满足如下书写要求:

  • 成员变量使用private修饰
  • 提供成员变量对应的setXxx() / getXxx()方法
  • 必须提供一个无参数构造器;有参数构造器是可写可不写的

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

区别 成员变量 局部变量
类中位置不同 类中,方法外 常见于方法中
初始化值不同 有默认值,无需初始化 没有默认值,使用前需要完成赋值
内存位置不同 堆内存 栈内存
生命周期不同 随着对象的创建而存在,随着对象的消失而消失 随着方法的调用而存在,随着方法的运行结束而消失
作用域 在所归属的大括号中

案例

  • 目标:完成电影信息的展示案例,理解面向对象变成的代码

首先我们设计一个Movie的类

package demo2;

public class Movie {
    // 1、成员变量
    private String name;
    private double score;
    private String actor;

    // 3、构造器
    public Movie() {
    }

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

    // 2、getter + setter
    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 String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }
}

创建对象,并访问对象

package demo2;

public class Test {
    public static void main(String[] args) {
        // 1、设计电影类
        // 2、创建3个电影对象,封装电影的信息
        // 3、定义一个电影类型的数组,存储3部电影对象
        Movie[] movies = new Movie[3];
        movies[0] = new Movie("《长津湖》", 9.7, "吴京");
        movies[1] = new Movie("《我和我的父亲》", 9.6, "吴京");
        movies[2] = new Movie("《朴水少年》", 9.5, "王川");
        
        // 4、遍历数组中每个电影对象,然后获取它的信息展示出来
        for (int i = 0; i < movies.length; i++) {
            Movie m = movies[i];
            System.out.println("电影名:" + m.getName());
            System.out.println("得分:" + m.getScore());
            System.out.println("主演:" + m.getActor());
            System.out.println("------------------------------");
        }
    }
}

文章作者: 不才叶某
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不才叶某 !
评论
  目录