Конструктор при наслеђивању у ООП-у у 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
конструктор родитеља, додавши у њега
параметар са годинама и платом.
Направите гетере за године и плату.