Chránené metódy v OOP v JavaScripte
Privátne metódy sa nededia a nie sú viditeľné zvonku triedy. Niekedy však sú potrebné metódy, ktoré sa dedia, ale nie sú viditeľné zvonku triedy. Takéto metódy sa nazývajú chránené (protected). JavaScript, bohužiaľ, nepodporuje takéto metódy.
Preto navrhujem zaviesť určitú dohodu, ktorá umožňuje vytvárať takéto metódy. Budeme začínať mená takýchto metód podčiarkovníkom. V podstate využijeme starú všeobecne prijatú dohodu o privátnych metódach. Len budeme takéto metódy nazývať chránenými na znamenie toho, že sa dedia, ale nebudeme ich používať zvonku. Avšak, práve tak sa používajú podľa starej dohody.
Takže, napíšme rodičovskú triedu s chránenou metódou:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Využime túto chránenú metódu v odvodenej triede:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
V nasledujúcom kóde urobte pomocnú metódu chránenou:
class User {
setName(name) {
if (this._notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
_notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this._notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}