Глоссарий

Полиморфизм

Полиморфизм — способность объектов разных классов реагировать на одинаковый вызов метода по-разному. Код, обращающийся к методу через интерфейс или родительский класс, не знает и не должен знать, какой именно подкласс выполнит логику.

Пример

interface Shape {
  area(): float;
}
class Circle implements Shape {
  area(): float { return M_PI * $this->r ** 2; }
}
class Square implements Shape {
  area(): float { return $this->side ** 2; }
}

function printArea(Shape $s): void {
  echo $s->area(); // не знает, круг или квадрат
}

Два типа