Konstruktor pri dedovanju v OOP v JavaScriptu
Pri dedovanju je mogoče redefinirati konstruktor starša. Poglejmo si na primeru. Naj imamo naslednji razred starša:
class User {
constructor(name, surn) {
this.name = name;
this.surn = surn;
}
getName() {
return this.name;
}
getSurn() {
return this.surn;
}
}
Naj od starševskega razreda deduje naslednji razred:
class Student extends User {
}
Naj želimo v razredu-potomcu razširiti konstruktor, tako da mu dodamo dodatne parametre:
class Student extends User {
constructor(name, surn, year) {
}
}
V tem primeru moramo obvezno
v prvi vrstici poklicati konstruktor
starša z super:
class Student extends User {
constructor(name, surn, year) {
super();
}
}
Ukaz super je v bistvu
konstruktor starša. Zato
mu posredujemo zahtevane parametre:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
}
}
Zdaj v potomcu leto študija zapišimo v lastno lastnost potomca:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
}
Naredimo getter za leto študija:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
getYear() {
return this.year;
}
}
Naj razred Employee deduje
od razreda User iz te
lekcije.
Redefinirajte v razredu Employee
konstruktor starša, tako da mu dodate
parameter s starostjo in plačo.
Naredite getterje za starost in plačo.