В ES6, какое объявление правильно создает класс, который расширяет другой класс?

Использование extends в ES6 для создания подклассов

В ES6 (ECMAScript 6) для создания класса, который наследует другой класс, правильное объявление осуществляется с помощью ключевого слова extends. Общий формат выглядит следующим образом:

class SubClass extends BaseClass {}

Это говорит интерпретатору JavaScript, что новый класс SubClass собирается наследовать все свойства и методы класса BaseClass.

Рассмотрим пример для ясности:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} издает звук.`);
  }
}

class Dog extends Animal {
  speak() {
    console.log(`${this.name} лает.`);
  }
}

const dog = new Dog('Барбос');
dog.speak(); // Вывод: "Барбос лает."

В данном примере класс Dog расширяет класс Animal. Мы переопределяем метод .speak() в классе Dog, поэтому когда мы вызываем .speak() для объекта dog, он использует версию метода, определённую в Dog, а не ту, которая определена в Animal.

Остальные представленные в вопросе ответы некорректны. Ключевое слово inherits и синтаксис SubClass: BaseClass {} не являются действительными в ES6. Выражение SubClass.prototype = new BaseClass(); является устаревшим способом наследования в JavaScript и считается неэффективным с введением классов в ES6.

Использование extends в ES6 позволяет нам эффективно и кратко создавать классы, которые наследуют свойства и методы других классов, что делает наш код более организованным и легко поддерживаемым.

Related Questions

Считаете ли это полезным?