Глоссарий

Абстрактный класс

Абстрактный класс — класс, от которого нельзя создать экземпляр напрямую. Он определяет общую структуру и может содержать как реализованные методы, так и абстрактные (только сигнатура; реализация — в подклассе).

Когда выбирать абстрактный класс vs интерфейс

Пример

abstract class Shape {
  abstract public function area(): float;

  public function describe(): string {
    return "Area: " . $this->area(); // общий код
  }
}

class Circle extends Shape {
  public function area(): float { return M_PI * $this->r ** 2; }
}