Bốn trụ cột là Encapsulation, Abstraction, Inheritance và Polymorphism. Cùng nhau, chúng mô tả cách OOP tổ chức và tái sử dụng code.
Bốn trụ cột là Encapsulation, Abstraction, Inheritance và Polymorphism. Cùng nhau, chúng mô tả cách OOP tổ chức và tái sử dụng code.
| Trụ cột | Ý tưởng cốt lõi |
|---|
| Encapsulation | Gói dữ liệu + hành vi; ẩn trạng thái nội bộ sau một interface được kiểm soát |
| Abstraction | Phơi bày cái gì một object làm, ẩn cách nó làm |
| Inheritance | Một subclass tái sử dụng và mở rộng class cha |
| Polymorphism | Một interface, nhiều cài đặt được chọn lúc runtime |
abstract class Shape { // ABSTRACTION: "cái gì", không phải "cách nào"
abstract double area(); // mỗi hình tự quyết định công thức của mình
}
class Circle extends Shape { // INHERITANCE: Circle là một Shape
private double r; // ENCAPSULATION: r là private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: area() riêng
}
class Square extends Shape {
private double s;
Square(double s) { this.s = s; }
double area() { return s * s; }
}
Shape shape = new Circle(2); // POLYMORPHISM trong thực tế:
System.out.println(shape.area()); // gọi Circle.area() lúc runtime
Đây là công cụ, không phải mục tiêu. Ép buộc inheritance hay abstraction ở nơi không cần thiết sẽ tạo ra sự phức tạp. Hãy dùng trụ cột nào phù hợp với bài toán.
Bốn từ này là vốn từ vựng chung của thiết kế OOP — các buổi phỏng vấn và code review đều mặc định bạn biết chúng.
Mỗi trụ cột ánh xạ tới một lợi ích cụ thể: encapsulation bảo vệ các bất biến (invariant), abstraction giảm bớt những gì bạn phải hiểu, còn inheritance và polymorphism mở ra khả năng tái sử dụng và mở rộng.