Java 对象和类

面向对象编程把现实事物抽象成「类」与「对象」:类是模板,对象是按模板造出的具体个体。例如「学生」是类,张三就是学生类的一个对象。Java 程序几乎都由类和对象组成。

面向对象思想

用类描述事物的两个侧面:

  • 属性:用成员变量表示,如学生的姓名、学号。
  • 行为:用成员方法表示,如学生上课、考试。

属性与行为封装在一个类里,就能反复 new 出许多对象,代码因此可复用、易维护。

类的定义

类由成员变量(属性)与成员方法(行为)组成,例如一个 Cat 类:

class Cat {
    String name;  // 成员变量:名字
    int age;      // 成员变量:年龄

    void meow() { // 成员方法:喵喵叫
        System.out.println(name + ":喵~");
    }
}

以上片段需放进 .java 文件,配合带 main 方法的类一起编译使用。

创建对象并访问成员

new 创建对象,再用「对象.成员」给成员变量赋值或调用方法:

// 片段需放进 main 方法中运行(Cat 类见上一小节)
Cat c = new Cat();       // new 创建对象
c.name = "小咪";         // 访问成员变量(赋值)
c.age = 2;
c.meow();                // 调用成员方法
// 输出:小咪:喵~

对象引用的含义

变量 c 保存的是对象的引用(内存地址),不是对象本身,因此两个引用可以指向同一个对象;而每次 new 都会产生彼此独立的新对象:

// 片段需放进 main 方法中运行
Cat a = new Cat();
Cat b = a;                // a、b 指向同一个对象
b.name = "大黄";
System.out.println(a.name);          // 输出:大黄

Cat s1 = new Cat();       // 每次 new 都是独立的新对象
Cat s2 = new Cat();
s1.name = "A";
s2.name = "B";
System.out.println(s1.name + " 与 " + s2.name); // 输出:A 与 B

this 关键字

方法参数与成员变量同名时,用 this.成员变量 明确表示「当前对象的成员变量」:

class Dog {
    String name;

    void setName(String name) {
        this.name = name;  // 左边是成员变量,右边是参数
    }
}

public class TestDog {
    public static void main(String[] args) {
        Dog d = new Dog();
        d.setName("旺财");
        System.out.println(d.name); // 输出:旺财
    }
}

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

对比项成员变量局部变量
声明位置类内、方法外方法或代码块内
默认值有(0 / null / false)无,必须初始化
生命周期随对象创建与销毁随方法调用结束而销毁
归属属于对象属于所在方法

类是模板、对象是实例。用 new 创建对象、用「点」访问成员、this 指向当前对象、多个对象各自独立——这就是 Java 面向对象编程的入门心法。

笔记加载中…