Конструктор при наследовании в ООП в 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
конструктор родителя, добавив в него
параметр с возрастом и зарплатой.
Сделайте геттеры для возраста и зарплаты.