Kế thừa trong PHP 8 vẫn giữ nguyên các nguyên tắc cơ bản như các phiên bản PHP trước đó, nhưng có một số cải tiến và tính năng mới. Hãy cùng xem xét các điểm chính về kế thừa trong PHP 8:
1. Cú pháp cơ bản: Để kế thừa một lớp, bạn sử dụng từ khóa extends
:
class ParentClass { // ... } class ChildClass extends ParentClass { // ... }
2. Từ khóa final
: PHP 8 vẫn hỗ trợ từ khóa final
để ngăn một lớp bị kế thừa hoặc một phương thức bị ghi đè:
final class CannotBeExtended { // ... } class NormalClass { final public function cannotBeOverridden() { // ... } }
3. Ghi đè phương thức: Trong PHP 8, bạn có thể sử dụng từ khóa override
để chỉ ra rõ ràng rằng một phương thức đang ghi đè phương thức của lớp cha:
class ParentClass { public function someMethod() { // ... } } class ChildClass extends ParentClass { public override function someMethod() { // ... } }
4. Kiểu trả về của phương thức kế thừa: PHP 8 cho phép kiểu trả về của phương thức con có thể là kiểu con của kiểu trả về của phương thức cha (covariant return type):
class Animal {} class Dog extends Animal {} class AnimalShelter { public function adoptAnimal(): Animal { // ... } } class DogShelter extends AnimalShelter { public function adoptAnimal(): Dog { // ... } }
5. Constructor Property Promotion: PHP 8 giới thiệu tính năng Constructor Property Promotion, giúp đơn giản hóa việc khai báo và khởi tạo thuộc tính trong constructor:
class ParentClass { public function __construct( protected string $name, protected int $age ) {} } class ChildClass extends ParentClass { public function __construct( string $name, int $age, private string $extraProperty ) { parent::__construct($name, $age); } }
6. Nullsafe Operator: PHP 8 giới thiệu toán tử nullsafe (?->), có thể hữu ích khi làm việc với các phương thức và thuộc tính được kế thừa:
$result = $obj?->parentMethod()?->childMethod();
Đây là những điểm chính về kế thừa trong PHP 8