Что такое ключевое слово extends в PHP?

«Что такое ключевое слово extends в PHP?» — вопрос из категории ООП, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ключевое слово 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 также используется для наследования интерфейсов друг от друга.