Konstruktor przy dziedziczeniu w OOP w JavaScript
Przy dziedziczeniu można nadpisywać konstruktor rodzica. Spójrzmy na przykładzie. Załóżmy, że mamy następującą klasę rodzica:
class User {
constructor(name, surn) {
this.name = name;
this.surn = surn;
}
getName() {
return this.name;
}
getSurn() {
return this.surn;
}
}
Załóżmy, że od klasy rodzicielskiej dziedziczy następująca klasa:
class Student extends User {
}
Załóżmy, że chcemy w klasie-potomku rozszerzyć konstruktor, dodając do niego dodatkowe parametry:
class Student extends User {
constructor(name, surn, year) {
}
}
W tym przypadku musimy koniecznie
w pierwszej linii wywołać konstruktor
rodzica za pomocą super:
class Student extends User {
constructor(name, surn, year) {
super();
}
}
Polecenie super w istocie jest
konstruktorem rodzica. Dlatego
przekażmy do niego wymagane parametry:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
}
}
Teraz w potomku rok nauki zapiszmy we własnej właściwości potomka:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
}
Zróbmy getter dla roku nauki:
class Student extends User {
constructor(name, surn, year) {
super(name, surn);
this.year = year;
}
getYear() {
return this.year;
}
}
Załóżmy, że klasa Employee dziedziczy
po klasie User z tej
lekcji.
Nadpisz w klasie Employee
konstruktor rodzica, dodając do niego
parametr z wiekiem i wynagrodzeniem.
Zrób gettery dla wieku i wynagrodzenia.