Inheritance (Kế thừa)
Khả năng xây dựng class mới dựa trên class đã tồn tại. Lợi ích chính: tái sử dụng code - không sao chép code của class cha, mà mở rộng nó, đưa thêm chức năng bổ sung ở class con.
<?php
class Animal {
protected $name;
public function __construct($name) { $this->name = $name; }
public function eat() { echo $this->name . " đang ăn\n"; }
}
class Dog extends Animal {
public function bark() { echo $this->name . " sủa: Gâu gâu\n"; }
}
class Cat extends Animal {
public function meow() { echo $this->name . " kêu: Meo meo\n"; }
}
$dog = new Dog("Chó");
$dog->eat(); // Chó đang ăn (kế thừa từ Animal)
$dog->bark(); // Chó sủa: Gâu gâu (riêng của Dog)⚠️ Rủi ro lớn của kế thừa
- Class cha có abstract method → class con phải triển khai nó, kể cả khi không cần đến.
- Rủi ro vi phạm Liskov Substitution Principle: vô tình khiến class con hoạt động không giống class cha → bug khó lường.
- Mọi thay đổi từ class cha đều có rủi ro gây lỗi lan xuống các class con.
- Hệ thống phình to → nhiều luồng kế thừa song song (BaseClass A + đàn con, BaseClass B + đàn con…) → mất kiểm soát.
→ Những rủi ro này dẫn tới nguyên tắc quan trọng: Composition over Inheritance (kế thừa = quan hệ “là một”; thành phần = quan hệ “có một”).
Liên quan
- OOP là gì - 1 trong 4 trụ cột
- Abstraction - Trừu tượng - abstract class là dạng cha đặc biệt
- Polymorphism - Đa hình - kế thừa + ghi đè là nền của đa hình
- Composition over Inheritance - thuốc giải cho rủi ro kế thừa