- Encapsulation (đóng gói): gói dữ liệu và hành vi thao tác trên dữ liệu vào một object, ẩn trạng thái nội bộ; bên ngoài chỉ truy cập qua interface công khai. Bảo vệ bất biến (invariant), giảm coupling.
- Abstraction (trừu tượng): lộ ra "làm gì", giấu "làm thế nào". Hình dung như bảng điều khiển xe: bạn dùng vô-lăng mà không cần biết cơ cấu bên dưới.
- Inheritance (kế thừa): class con tái sử dụng và mở rộng class cha, thiết lập quan hệ "is-a". Tránh lặp code nhưng dễ tạo hierarchy cứng — ưu tiên composition khi quan hệ không thực sự là "is-a".
- Polymorphism (đa hình): cùng một lời gọi method cho kết quả khác nhau tùy kiểu thực tế của object (override / interface). Cho phép code phụ thuộc abstraction, thêm kiểu mới mà không sửa nơi gọi.
Bốn trụ cột này độc lập với ngôn ngữ — biểu hiện khác nhau ở Java, C#, Python, TypeScript nhưng ý niệm giống nhau.