Aizsargātās metodes OOP JavaScript
Privātās metodes netiek mantotas un nav redzamas ārpus klases. Tomēr dažreiz ir nepieciešamas metodes, kas tiek mantotas, bet nav redzamas ārpus klases. Šādas metodes sauc par aizsargātajām (protected). Diemžēl JavaScript neatbalsta šādas metodes.
Tāpēc es ierosinu ieviest noteiktu vienošanos, kas ļauj izveidot šādas metodes. Mēs sāksim šādu metožu nodus ar pasvītrojumu. Faktiski mēs izmantosim veco vispārpieņemto vienošanos par privātajām metodēm. Tikai sauksim šādas metodes par aizsargātām kā norādi uz to, ka tās tiek mantotas, bet mēs neizmantosim tās ārpusē. Tomēr tieši tā tās tiek izmantotas saskaņā ar seno vienošanos.
Tātad, uzrakstīsim vecāka klasi ar aizsargātu metodi:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Izmantosim šo aizsargāto metodi bērna klasē:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Šajā kodā padariet palīgmetodi aizsargātu:
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;
}
}