Prywatne metody przy dziedziczeniu w OOP w JavaScript
Prywatne metody nie są dziedziczone. Jest to celowo zaprojektowane, aby nie naruszać hermetyzacji. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę nadrzędną z metodą prywatną:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.#capeFirst(this.name);
}
#capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Załóżmy, że z klasy nadrzędnej dziedziczy następująca klasa:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.surn;
}
}
Załóżmy, że klasa potomna chce skorzystać z prywatnej metody rodzica. JavaScript na to nie pozwoli i zgłosi błąd:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this.#capeFirst(this.surn); // będzie błąd
}
}
Spróbuj w klasie Employee
skorzystać z prywatnej metody
rodzica.