四大支柱是 Encapsulation、Abstraction、Inheritance 和 Polymorphism。它们共同描述了 OOP 如何组织和重用代码。
| 支柱 | 核心思想 |
|---|
| Encapsulation | 捆绑数据和行为;将内部状态隐藏在受控接口后面 |
| Abstraction | 暴露对象做什么,隐藏它如何做 |
| Inheritance | 子类重用并扩展父类 |
| Polymorphism | 一个接口,多个实现在运行时选择 |
abstract class Shape { // ABSTRACTION: "what", not "how"
abstract double area(); // each shape decides its own formula
}
class Circle extends Shape { // INHERITANCE: Circle is a Shape
private double r; // ENCAPSULATION: r is private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: own area()
}
class Square extends Shape {
private double s;
Square(double s) { this.s = s; }
double area() { return s * s; }
}
Shape shape = new Circle(2); // POLYMORPHISM in action:
System.out.println(shape.area()); // calls Circle.area() at runtime
这些是工具,不是目标。在不需要的地方强行使用继承或抽象会增加复杂性。选择适合问题的支柱。
这四个词是 OOP 设计的共同词汇——面试和代码审查都假设你了解它们。
每个支柱都映射到一个具体的好处:encapsulation 保护不变量,abstraction 减少了你需要理解的内容,inheritance 和 polymorphism 实现代码重用和可扩展性。