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