Что такое наследование?
Объекты и прототипы
Наследование — это механизм ООП, при котором один класс (или объект) получает свойства и методы другого, что позволяет переиспользовать код и строить иерархии.
В JavaScript через class
class Animal {
constructor(name) { this.name = name; }
eat() { return `${this.name} ест`; }
}
class Dog extends Animal {
bark() { return 'Гав'; }
}
const dog = new Dog('Рекс');
dog.eat(); // унаследовано от Animal
dog.bark(); // своёextendsзадаёт родителя.super(...)вызывает конструктор родителя.super.method()— метод родителя.
Через прототипы (под капотом)
class — сахар над прототипным наследованием: методы ищутся по цепочке прототипов до null.
Переопределение (полиморфизм)
Наследник может заменить метод родителя:
class Cat extends Animal {
eat() { return `${super.eat()} рыбу`; }
}Композиция против наследования
Часто предпочитают композицию (объект собирается из частей) — она гибче и не создаёт жёстких иерархий. Правило: «предпочитай композицию наследованию».
Коротко для собеседования
Наследование — получение свойств и методов родителя через extends/super; в JS реализовано прототипами (class — сахар). Позволяет переиспользовать код и переопределять методы (полиморфизм). Часто предпочитают композицию как более гибкую.