← Назад ко всем вопросам

Что такое extends

1️⃣ Как кратко ответить

extends — это ключевое слово в JavaScript (ES6 и выше), используемое для создания подкласса, который наследует свойства и методы от другого класса. Оно позволяет создавать иерархию классов, упрощая повторное использование кода и организацию логики приложения.

2️⃣ Подробное объяснение темы

В JavaScript, начиная с версии ECMAScript 6 (ES6), появилась поддержка классов, что упростило работу с объектно-ориентированным программированием. Ключевое слово extends используется для создания нового класса, который наследует свойства и методы от существующего класса. Это позволяет создавать более сложные структуры данных и повторно использовать код.

Зачем это нужно

Наследование — это фундаментальная концепция объектно-ориентированного программирования, которая позволяет одному классу (подклассу) наследовать функциональность другого класса (родительского класса). Это помогает избежать дублирования кода и упрощает его поддержку. Например, если у вас есть базовый класс Animal, вы можете создать подклассы Dog и Cat, которые будут наследовать общие свойства и методы от Animal, но также иметь свои уникальные особенности.

Как это работает

Когда вы используете extends, вы создаете новый класс, который автоматически получает все свойства и методы родительского класса. Вы также можете добавлять новые свойства и методы или переопределять существующие.

Пример кода

// Родительский класс Animal
class Animal {
  constructor(name) {
    this.name = name; // Устанавливаем имя животного
  }
​
  speak() {
    console.log(`${this.name} издает звук.`); // Метод, который выводит звук животного
  }
}
​
// Подкласс Dog, который наследует от Animal
class Dog extends Animal {
  constructor(name, breed) {
    super(name); // Вызываем конструктор родительского класса с параметром name
    this.breed = breed; // Устанавливаем породу собаки
  }
​
  speak() {
    console.log(`${this.name} лает.`); // Переопределяем метод speak для класса Dog
  }
}
​
// Создаем экземпляр класса Dog
const myDog = new Dog('Бобик', 'Бульдог');
myDog.speak(); // Вывод: Бобик лает.

Объяснение кода

  1. Класс Animal: Это родительский класс, который имеет конструктор, принимающий параметр name, и метод speak, который выводит сообщение о звуке, издаваемом животным.

  2. Класс Dog: Это подкласс, который наследует от Animal с помощью extends. В его конструкторе используется super(name), чтобы вызвать конструктор родительского класса и установить имя. Также добавляется новое свойство breed для породы собаки.

  3. Переопределение метода: В классе Dog метод speak переопределяется, чтобы выводить специфичное для собак сообщение.

  4. Создание экземпляра: Создается экземпляр Dog с именем 'Бобик' и породой 'Бульдог'. Вызов myDog.speak() демонстрирует, как переопределенный метод speak работает для объекта Dog.

Использование extends позволяет создавать более сложные иерархии классов, что делает код более организованным и легким для поддержки.

Тема: TypeScript
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки