> Как работает наследование в JavaScript с использованием super и методов родительского класса? (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: EPAM

Стек: JavaScript

> Пример ответа

Наследование в JavaScript реализуется через прототипное наследование, а ключевые слова class, extends и super являются синтаксическим сахаром над прототипами. При использовании super в конструкторе дочернего класса необходимо вызвать super() до обращения к this, так как это инициализирует родительский конструктор и создает контекст для дочернего экземпляра.

Пример:

JAVASCRIPT
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} издает звук`;
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // вызов родительского конструктора
this.breed = breed;
}
speak() {
// вызов метода родительского класса через super
const parentSound = super.speak();
return `${parentSound}, но как собака: гав-гав!`;
}
}
const dog = new Dog('Рекс', 'Овчарка');
console.log(dog.speak()); // "Рекс издает звук, но как собака: гав-гав!"

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

  • super() в конструкторе вызывает родительский конструктор и должен быть вызван до использования this.
  • super.methodName() позволяет обратиться к методам родительского класса, даже если они переопределены в дочернем.
  • Цепочка прототипов: методы дочернего класса переопределяют родительские, но super сохраняет доступ к ним.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью