Как создать объект на основе абстрактного класса

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

Ответ

В PHP нельзя напрямую создать объект абстрактного класса. Абстрактный класс нужен для наследования - от него можно создать дочерний класс, который реализует все абстрактные методы родителя.

Пример:

abstract class Animal {
    abstract public function makeSound();
}

class Dog extends Animal {
    public function makeSound() {
        echo "Гав!";
    }
}

$dog = new Dog(); // Работает
// $animal = new Animal(); // Ошибка!

Ключевые моменты:

  1. Абстрактный класс может содержать как абстрактные методы (без реализации), так и обычные
  2. Дочерний класс обязан реализовать все абстрактные методы родителя
  3. Абстрактный класс может содержать свойства и константы