版本:基于 Java 17 & Java 21 LTS

Java 是一门彻头彻尾的面向对象 (OOP) 语言。万物皆对象,而类 (Class) 则是产生对象的模板。本篇将带你建立正确的 OOP 思维。


1. 类与对象 (Class & Object)

  • :就像一张图纸,定义了属性 (成员变量) 和行为 (方法)。

  • 对象:根据图纸造出来的实体。

public class Student {
    // 1. 属性 (状态)
    String name;
    int age;

    // 2. 行为 (方法)
    void study() {
        System.out.println(name + " 正在学习...");
    }
}

2. 构造器 (Constructor)

构造器是专门用于创建对象并初始化的特殊方法。

public class Car {
    String brand;

    // 1. 无参构造器
    public Car() {}

    // 2. 有参构造器 (构造器重载)
    public Car(String brand) {
        this.brand = brand; // this 代表当前对象
    }
}

var myCar = new Car("Tesla");

3. 静态修饰符:static

static 修饰的变量或方法属于本身,而不是属于某个具体的对象。它们被该类的所有对象共享。

public class Counter {
    public static int count = 0; // 静态变量,全局共享

    public Counter() {
        count++;
    }

    public static void showCount() { // 静态方法,可通过类名直接调用
        System.out.println("当前计数: " + count);
    }
}

4. 初始化块 (Initialization Blocks)

除了构造器,Java 还提供了初始化块来初始化对象。

public class Database {
    // 1. 静态代码块:类加载时执行一次,通常用于加载驱动、读取配置文件
    static {
        System.out.println("静态块:连接池初始化中...");
    }

    // 2. 构造代码块:每次创建对象前都会执行,早于构造器
    {
        System.out.println("构造块:对象准备中...");
    }
}

5. 封装 (Encapsulation)

封装的本质是:隐藏实现细节,对外提供公共访问方式。

  • private: 仅本类可见。

  • public: 全局可见。

标准的 Java Bean 写法 (Getter/Setter)

public class User {
    private String password;

    public String getPassword() { return "******"; }
    public void setPassword(String password) { this.password = password; }
}

6. 现代 OOP 的选择:Record

如果你只是想创建一个简单的“数据载体”类,请不要再写繁琐的 private/getter/setter 了,直接使用 Java 16+ 引入的 Record

// 一行搞定:自动包含 private final 字段、全参构造器、Getter、toString、equals、hashCode
public record Point(int x, int y) {}

// 使用时
var p = new Point(10, 20);
System.out.println(p.x()); // 访问方法是 x() 而不是 getX()

本章小结

第四篇我们深度学习了:

  1. 类与对象的核心概念及其相互关系。

  2. 构造器的重载与 this 关键字的应用。

  3. static 修饰符:静态变量与静态方法的本质。

  4. 初始化块:静态块与构造块的执行时机。

  5. 封装原则与现代数据建模工具 Record

下一篇预告:面向对象高级 (继承、多态、接口、内部类)