Kế thừa (Inheritance)
Class mới kế thừa member từ class có sẵn (base class). Mối quan hệ IS-A.
Ví dụ: Mammal IS-A Animal, Dog IS-A Mammal => Dog IS-A Animal.
class Shape { ... }
class Circle : Shape { ... }
class Square : Shape { ... }
Composition
Object cha chứa object con. Mối quan hệ HAS-A (part-of). Nếu cha bị hủy, con cũng mất.
Ví dụ: Car HAS-A Engine. Car hủy => Engine hủy.
public class Engine { ... }
public class Car
{
Engine eng = new Engine(); // Composition
...
}
So sánh
| Tiêu chí | Inheritance | Composition |
|---|---|---|
| Mối quan hệ | IS-A | HAS-A |
| Coupling | Tight (chặt) | Loose (lỏng) |
| Tái sử dụng | Kế thừa implementation | Delegate to component |
| Thay đổi runtime | Khó | Dễ (swap component) |
| Đa kế thừa | Không (single inheritance) | Có (nhiều component) |
Nguyên tắc: "Favor composition over inheritance" - ưu tiên composition trừ khi rõ ràng là IS-A relationship.