Zaščitene metode v OOP v JavaScript
Zasebne metode se ne dedujejo in niso vidne zunaj razreda. Vendar so včasih potrebne metode, ki se dedujejo, niso pa vidne zunaj razreda. Takšne metode imenujemo zaščitene (protected). JavaScript na žalost ne podpira takih metod.
Zato predlagam, da uvedemo neko dogovorjenost, ki omogoča ustvarjanje takih metod. Poimenovali jih bomo z začetkom metod s podčrtajem. Pravzaprav uporabljamo staro splošno sprejeto dogovorjenost o zaprtih metodah. Le da takšne metode imenujemo zaščitene kot znak, da se dedujejo, vendar jih ne bomo uporabljali zunaj. Pravzaprav se ravno tako uporabljajo po starodavni dogovorjenosti.
Torej, napišimo nadrejeni razred z zaščiteno metodo:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Uporabimo to zaščiteno metodo v podrejenem razredu:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
V naslednji kodi naredite pomožno metodo zaščiteno:
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;
}
}