-
Abstraction
-
Encapsulation
-
Inheritance
-
Polymorphism
-
Favor Composition Over Inheritance
Là một nội dụng trong lập trình hướng đối tượng, sử dụng những thứ đơn giản để đại diện những thứ phức tạp, để ẩn những thông tin không cần thiết, chỉ hiện thị cái khung sườn chung nhất của các đối tượng
Ví dụ, một class Vehicle thể hiện sự trừu tượng của đối tượng trong thực tế, có
- năm sản xuất
- giá
- hãng
Là một cớ chế để wrap up code như một đơn vị duy nhất (single unit). Là một quá trình ẩn thông tin chi tiết và bảo vệ data và hành vi của đối tượng. Được thể hiện qua từ khóa
- public
- private
- protected
Nếu một thuộc tính là private, muốn lấy hoặc thay đổi giá trị phải thông qua 2 phương thức điển hình là getter và setter
Là một cơ chế mà một lớp thừa hưởng những thứ đã có của lớp trước, ví dụ con cái thừa hưởng gen từ cha mẹ. Với inheritance, chúng ta có thể tái sử dụng thuộc tính và phương thức class car kế thừa class vehicle, sẽ thừa hưởng phương thức run()
Sử dụng type của cha để tham chiếu đến instance của con, một class có nhiều dạng, bằng cách một class được kế thừa bởi nhiều class khác
ví dụ, class Bike, class Car, kế thừa từ class vehicle. Khi đó một vehicle có 2 dạng
bike.run() sẽ khác car.run() tái sử dụng code, dễ thay đổi
https://www.geeksforgeeks.org/favoring-composition-over-inheritance-in-java-with-examples/
thực hiện composition, mối quan hệ là has-a A has a B chúng ta tạo một đối tượng B trong class A