PassFront
  1. PassFront
  2. База знаний
  3. Классы

Что такое полиморфизм?

Классы

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

Идея

Один и тот же вызов метода даёт разное поведение в зависимости от типа объекта.

class Shape {
  area() { return 0; }
}
class Circle extends Shape {
  constructor(r) { super(); this.r = r; }
  area() { return Math.PI * this.r ** 2; }
}
class Square extends Shape {
  constructor(s) { super(); this.s = s; }
  area() { return this.s ** 2; }
}

const shapes = [new Circle(2), new Square(3)];
shapes.forEach((s) => console.log(s.area())); // разные реализации area()

Код работает с абстракцией Shape, не зная конкретный тип.

Формы полиморфизма

  • Переопределение методов (overriding) — наследник меняет реализацию.
  • Утиная типизация (duck typing) — в JS важно наличие метода, а не тип: «если крякает как утка».

Зачем нужен

  • Расширяемость: новый тип добавляется без изменения существующего кода (принцип Open/Closed).
  • Единообразная работа с разными объектами.

Коротко для собеседования

Полиморфизм — единый интерфейс для разных типов с индивидуальной реализацией (например, переопределённый area()). В JS работает через переопределение методов и утиную типизацию, обеспечивая расширяемость по принципу Open/Closed.

Другие вопросы раздела