Zaštićene metode u OOP u JavaScriptu
Privatne metode se ne nasleđuju i nisu vidljive spolja klase. Međutim, ponekad su potrebne metode koje se nasleđuju, ali nisu vidljive spolja klase. Takve metode se nazivaju zaštićenim (protected) metodama. JavaScript, nažalost, ne podržava takve metode.
Stoga predlažem da uvedemo određeni dogovor koji omogućava kreiranje takvih metoda. Počećemo imena takvih metoda sa donjom crtom. U suštini koristimo staru opšteprihvaćenu konvenciju o privatnim metodama. Samo ćemo takve metode zvati zaštićenim kao znak da se nasleđuju, ali ih nećemo koristiti spolja. Uostalom, upravo se tako one i koriste po drevnoj konvenciji.
Dakle, hajde da napišemo roditeljsku klasu sa zaštićenom metodom:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Iskoristimo ovu zaštićenu metodu u izvedenoj klasi:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
U sledećem kodu napravite pomoćnu metodu zaštićenom:
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;
}
}