Abstract class là class không đầy đủ, không thể khởi tạo trực tiếp—chỉ có thể kế thừa.
- Dùng
abstract class Animal { abstract public function sound(); }. - Subclass bắt buộc phải triển khai abstract method:
class Dog extends Animal { public function sound() { return "Woof"; } }. - Abstract class có thể có method cụ thể và thuộc tính, khác với interface.
- Dùng khi muốn áp đặt cấu trúc nhưng có sẵn một số implementation mặc định: interface chỉ cho contracts thuần túy, abstract class cho chức năng cơ sở được chia sẻ.