Конструктор при наследовании в ООП в JavaScript

При наследовании можно переопределять конструктор родителя. Давайте посмотрим на примере. Пусть у нас есть следующий класс родителя:

class User { constructor(name, surn) { this.name = name; this.surn = surn; } getName() { return this.name; } getSurn() { return this.surn; } }

Пусть от родительского класса наследует следующий класс:

class Student extends User { }

Пусть мы хотим в классе-потомке расширить конструктор, добавив в него дополнительные параметры:

class Student extends User { constructor(name, surn, year) { } }

В этом случае нам обязательно нужно первой строкой вызвать конструктор родителя через super:

class Student extends User { constructor(name, surn, year) { super(); } }

Команда super по сути является конструктором родителя. Поэтому передадим в него требуемые параметры:

class Student extends User { constructor(name, surn, year) { super(name, surn); } }

Теперь в потомке год обучения запишем в свое свойство потомка:

class Student extends User { constructor(name, surn, year) { super(name, surn); this.year = year; } }

Сделаем геттер для года обучения:

class Student extends User { constructor(name, surn, year) { super(name, surn); this.year = year; } getYear() { return this.year; } }

Пусть класс Employee наследует от класса User из данного урока.

Переопределите в классе Employee конструктор родителя, добавив в него параметр с возрастом и зарплатой.

Сделайте геттеры для возраста и зарплаты.



Чат с GPT Компилятор