Ответ
Ключевое слово extends используется в PHP для реализации наследования — механизма ООП, при котором один класс (дочерний, наследник) может унаследовать свойства и методы другого класса (родительского, базового). PHP поддерживает одиночное наследование (класс может наследовать только от одного родителя).
Основные принципы:
- Дочерний класс получает все public и protected методы и свойства родительского класса.
- Дочерний класс может переопределить (override) унаследованные методы, предоставив свою собственную реализацию.
- Для доступа к переопределённому методу или свойству родителя используется оператор
parent::.
Пример базового наследования:
class Vehicle
{
protected string $brand;
public function __construct(string $brand)
{
$this->brand = $brand;
}
public function getInfo(): string
{
return "Brand: {$this->brand}";
}
}
class Car extends Vehicle
{
private int $doors;
public function __construct(string $brand, int $doors)
{
// Вызов конструктора родительского класса
parent::__construct($brand);
$this->doors = $doors;
}
// Переопределение метода родителя с расширением функциональности
public function getInfo(): string
{
$baseInfo = parent::getInfo();
return $baseInfo . ", Doors: {$this->doors}";
}
}
$myCar = new Car('Toyota', 4);
echo $myCar->getInfo(); // Brand: Toyota, Doors: 4
Важные ограничения:
- Если класс или метод объявлен с модификатором
final, его нельзя наследовать или переопределять. - Ключевое слово
extendsтакже используется для наследования интерфейсов друг от друга.