Konstruktor pri nasleđivanju u OOP-u u JavaScript-u
Pri nasleđivanju je moguće redefinisati konstruktor roditelja. Pogledajmo to na primeru. Neka imamo sledeću klasu roditelja:
class User {
constructor(name, surn) {
this.name = name;
this.surn = surn;
}
getName() {
return this.name;
}
getSurn() {
return this.surn;
}
}
Neka od roditeljske klase nasleđuje sledeća klasa:
class Student extends User {
}
Pretpostavimo da u klasi-potomku želimo da proširimo konstruktor, dodajući mu dodatne parametre:
class Student extends User {
constructor(name, surn, year) {
}
}
U ovom slučaju, obavezno nam je
prvom linijom pozvati konstruktor
roditelja putem super:
class Student extends User {
constructor(name, surn, year) {
super();
}
}
Komanda super je u suštini
konstruktor roditelja. Stoga,
prosledimo mu tražene parametre:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
}
}
Sada u potomku upisaćemo godinu studija u sopstveno svojstvo potomka:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
}
Napravićemo geter za godinu studija:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
getYear() {
return this.year;
}
}
Neka klasa Employee nasleđuje
od klase User iz ove
lekcije.
Redefinišite u klasi Employee
konstruktor roditelja, dodajući u njega
parametre za godine i platu.
Napravite getere za godine i platu.