Skip to content

02 面向对象与类设计 ​

本章目标:掌握类与对象、封装、继承、多态,建立可维护的 Java 类设计思维。


1. 什么是面向对象 ​

面向对象是把现实问题抽象成对象,通过对象之间协作完成业务。

核心思想:

  • 万物皆对象
  • 行为通过方法表达
  • 数据通过属性承载

2. 类与对象 ​

java
class User {
    String name;
    int age;

    void sayHi() {
        System.out.println("Hi, 我是 " + name);
    }
}
java
User user = new User();
user.name = "Tom";
user.age = 22;
user.sayHi();

3. 封装(Encapsulation) ​

把属性私有化,通过公开方法控制访问。

java
class Account {
    private double balance;

    public void deposit(double money) {
        if (money > 0) {
            balance += money;
        }
    }

    public double getBalance() {
        return balance;
    }
}

好处:

  • 防止数据被随意篡改
  • 对外暴露稳定接口

4. 继承(Inheritance) ​

子类复用父类代码,表示“is-a”关系。

java
class Animal {
    public void eat() {
        System.out.println("动物在吃东西");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("汪汪叫");
    }
}

5. 多态(Polymorphism) ​

父类引用指向子类对象,同一方法调用表现出不同实现。

java
class Animal {
    public void sound() {
        System.out.println("动物发声");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("喵喵喵");
    }
}

class Bird extends Animal {
    @Override
    public void sound() {
        System.out.println("啾啾啾");
    }
}
java
Animal a1 = new Cat();
Animal a2 = new Bird();
a1.sound(); // 喵喵喵
a2.sound(); // 啾啾啾

6. 抽象类与接口 ​

6.1 抽象类 ​

  • 用于描述“公共基础能力”
  • 可包含普通方法和抽象方法

6.2 接口 ​

  • 只定义规范(能力契约)
  • 一个类可实现多个接口

7. 类设计建议 ​

  1. 一个类只做一件事(单一职责)
  2. 优先组合而不是滥用继承
  3. 字段私有,方法公开(必要时)
  4. 对外暴露接口,隐藏实现细节

8. 面试高频点 ​

  1. 封装、继承、多态分别解决什么问题?
  2. 抽象类和接口的区别?
  3. 重载(Overload)和重写(Override)区别?
  4. 为什么说“面向接口编程”更灵活?

9. 练习题 ​

  1. 设计 Employee、Manager、Developer 三个类,体现继承和多态。
  2. 实现一个 Payable 接口,包含 pay() 方法。
  3. 用封装实现一个 Student 类,限制年龄必须在 0~120。

10. 本章小结 ​

  • 面向对象不只是语法,而是建模思维。
  • 写可维护 Java 代码的关键:封装边界、抽象能力、合理复用。