Перейти к содержимому

JavaScript: Наследование классов

Введение в наследование классов в JavaScript

Наследование классов — это фундаментальная концепция объектно-ориентированного программирования, которая позволяет одному классу наследовать свойства и методы от другого класса. В JavaScript наследование классов реализуется с помощью ключевого слова extends, что предоставляет способ создания производного класса, наследующего свойства и методы базового класса.

Более подробную информацию о базовом синтаксисе см. в статье JavaScript: Классы и базовый синтаксис.

Создание производного класса

Чтобы создать класс, наследующий другой класс, используется ключевое слово extends:

Output appears here after Run.

В этом примере Circle расширяет Shape, то есть наследует свойства и методы Shape, одновременно предоставляя собственные методы. Обратите внимание, что Circle не определяет собственный конструктор. В JavaScript производные классы без явного конструктора автоматически вызывают super() с теми же аргументами, которые переданы в конструктор производного класса.

Переопределение методов

Производные классы могут переопределять методы своих базовых классов, чтобы обеспечить поведение, специфичное для подкласса.

Output appears here after Run.

Здесь Circle переопределяет метод print, чтобы отразить его конкретный тип.

Вызов методов родительского класса с помощью super

Вы также можете вызвать метод родительского класса из производного класса, используя super.methodName(). Это полезно, когда вы хотите расширить поведение родителя, а не полностью заменить его.

Output appears here after Run.

Здесь super.print() выполняет логику родителя перед добавлением вывода, специфичного для подкласса.

Доступ к конструктору родительского класса: ключевое слово super

Когда класс расширяет другой класс, функция-конструктор производного класса должна вызвать конструктор родителя с помощью super() перед тем, как сможет использовать this. Вот как super используется в конструкторах для обеспечения инициализации родительского класса:

Output appears here after Run.

Заключение

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

Практика

In JavaScript class inheritance, which statements are true?

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

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.