类与对象
类是对象的模板,定义了对象的属性和行为;对象是类的实例,具有具体的状态和行为。理解类与对象是学习面向对象编程的第一步。
作用
面向对象编程通过类和对象的概念,使代码更加模块化、可重用和易于维护。它模拟了现实世界中的实体和关系,使程序更接近人类的思维方式。掌握类与对象的概念,将为后续学习封装、继承和多态打下基础。
图表说明
graph LR
    OOP[面向对象编程] --> Class[类与对象]
    OOP --> Features[三大特性]
    Class --> Define["📦 类定义
    public class Car {
        // 属性
        // 方法
    }"]
    Class --> Instance["🔄 对象实例化
    Car myCar = new Car();"]
    Features --> Encapsulation["🔒 封装
    - private修饰属性
    - public getter/setter"]
    Features --> Inheritance["🎁 继承
    - extends关键字
    - super调用父类
    - 方法重写"]
    Features --> Polymorphism["🎭 多态
    - 方法重载
    - 父类引用指向子类对象
    - 接口实现"]
    Define --> Attribute["属性
    String color;
    int speed;"]
    Define --> Method["方法
    void run() {
        // 实现
    }"]
    Encapsulation --> AccessControl["访问控制
    public > protected > 默认 > private"]
    Inheritance --> Override["方法重写规则
    1. 相同方法名和参数
    2. 返回值类型相同或子类
    3. 访问权限不能更严格"]
    Polymorphism --> Interface["接口多态
    interface Drivable {
        void drive();
    }"]
例子
public class ClassObjectDemo {
    public static void main(String[] args) {
        // 创建对象
        Car myCar = new Car("Toyota", "Red");
        // 访问属性
        System.out.println("品牌: " + myCar.getBrand());
        System.out.println("颜色: " + myCar.getColor());
        // 调用方法
        myCar.accelerate(30);
        System.out.println("当前速度: " + myCar.getSpeed());
        myCar.brake(10);
        System.out.println("刹车后速度: " + myCar.getSpeed());
        // 对象比较
        Car anotherCar = new Car("Toyota", "Red");
        System.out.println("相同品牌颜色: " + myCar.equals(anotherCar));
    }
}
class Car {
    // 成员变量
    private String brand;
    private String color;
    private int speed;
    // 构造方法
    public Car(String brand, String color) {
        this.brand = brand;
        this.color = color;
        this.speed = 0;
    }
    // 成员方法
    public void accelerate(int increment) {
        this.speed += increment;
    }
    public void brake(int decrement) {
        this.speed = Math.max(0, this.speed - decrement);
    }
    // 访问器方法
    public String getBrand() {
        return this.brand;
    }
    public String getColor() {
        return this.color;
    }
    public int getSpeed() {
        return this.speed;
    }
    // 重写equals方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Car car = (Car) obj;
        return brand.equals(car.brand) && color.equals(car.color);
    }
}
详细说明
- 
类的组成:
- 成员变量:描述对象的属性,如汽车的颜色、速度
 - 构造方法:初始化对象,设置初始状态
 - 成员方法:定义对象的行为,如加速、刹车
 - 访问修饰符:控制属性和方法的访问权限
 
 - 
对象的特点:
- 状态:由成员变量的值决定,如汽车当前的速度
 - 行为:由成员方法定义,如汽车的加速和刹车
 - 标识:每个对象都是唯一的,可以通过equals方法比较
 
 - 
核心概念:
- 封装:通过访问修饰符控制属性的访问
 - 继承:通过extends关键字实现代码复用
 - 多态:通过方法重写实现不同行为
 
 
注意事项
- 类名使用大驼峰命名法,如Car、Student
 - 成员变量通常私有(private),通过方法访问
 - 提供公共(public)访问方法,控制数据访问
 - 重写equals()必须同时重写hashCode()
 - 
考虑实现toString()方法,方便调试
クラスはオブジェクトの設計図であり、オブジェクトはクラスの実例です。オブジェクト指向プログラミングでは、クラスとオブジェクトを使用して、コードの再利用性と保守性を向上させます。