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