Java 面向对象

146 阅读3分钟

Java 面向对象

程序是为了模拟现实世界,解决现实问题,而使用计算机语言编写的一系列指令的集合。

对象

一切客观存在的事物都是对象,万物皆对象

任何对象一定具有自己的特征和行为。

  • 特征:称为属性,一般是名词,代表对象都有什么。
  • 行为:称为方法,一般是动词,代表对象能做什么。

程序中的对象

  • 程序是如何模拟现实世界

    • 现实中的对象程序中也应该具有。
    • 程序中必须具有与现实相同的对象,用以模拟。
    • 使用程序中的对象代替现实中的对象,执行解决问题。
  • 现实与程序

    • 现实中对象来自模板,通过模板可以造实体,继而称为现实中的对象。
    • 程序中对象来自模板(类),通过类可以造对象,实体就是程序中的对象。

类与对象的关系

:定义了对象具有的特征和行为,类是对象的模板。
对象:拥有多个特征和行为的实体,对象是类的实体。

实例变量与局部变量的区别

局部变量实例变量
定义位置方法或方法内的结构中类的内部,方法的外部
默认值无默认值字面值(与数组相同)
使用范围从定义行到包含其结构结束本类有效
命名冲突不允许与局部变量重名不允许与实例变量重名,可与局部变量重名,局部变量优先

方法重载

重载(overload):一个类中定义了多个相同名称的方法。

要求

  1. 方法名相同。
  2. 参数列表不同(类型、个数、顺序)。
  3. 与访问修饰符和返回值类型无关。

调用

调用带有重载方法时,需要根据传入实参找到与之匹配的方法。

好处:灵活、方便,屏蔽使用差异。

public class Calculate {

    public int add(int num1, int numb2) {
        return num1 + numb2;
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }

    public int add(int num1, int num2, int num3) {
        return num1 + num2 + num3;
    }

    public double add(int num1, double num2) {
        return num1 + num2;
    }

    public double add(double num1, int num2) {
        return num1 + num2;
    }
}

构造方法

类中的特殊方法,主要用于创建对象。

特点:

  • 名称与类完全相同。
  • 没有返回值类型。
  • 创建对象时,触发构造方法调用。

注意

  1. 如果类中没有显示定义构造方法,则编译器默认提供无参构造方法。
  2. 如果已经手动添加了带参数的构造器,则编译器不再默认提供无参构造方法,可根据需求自行添加。(建议添加)
public class Teacher {
    String name;
    String sex;
    double salary;
    int age;

    public Teacher() {
    }

    public Teacher(String name) {
        this.name = name;
    }

    public Teacher(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    public Teacher(String name, String sex, double salary) {
        this.name = name;
        this.sex = sex;
        this.salary = salary;
    }

    public Teacher(String name, String sex, double salary, int age) {
        this.name = name;
        this.sex = sex;
        this.salary = salary;
        this.age = age;
    }
}

this 关键字

this 指当前实例,即模板中当前对象,模板服务于哪个对象,this 指向哪个对象。

用法:

  1. 调用实例属性、实例方法。this.name this.show()
  2. 调用本类中的其他构造方法。this()必须写在构造方法的首行

既然 this 指的是当前实例,说明在程序中直接打印 this 时是一个引用。事实也的确如此。

image.png

image.png