Suojatut metodit OOP:ssa JavaScriptissä
Yksityisiä metodeja ei periydy, eivätkä ne ole näkyvissä luokan ulkopuolella. Joskus kuitenkin tarvitaan metodeja, jotka periydyvät, mutta eivät ole näkyvissä luokan ulkopuolella. Tällaisia metodeja kutsutaan suojatuiksi (protected). JavaScript valitettavasti ei tue tällaisia metodeja.
Siksi ehdotan, että otamme käyttöön sopimuksen, jolla voimme luoda tällaisia metodeja. Nimeämme tällaisten metodien nimet alaviivalla. Käytännössä käytämme vanhaa yleisesti hyväksyttyä sopimusta yksityisistä metodeista. Vain kutsumme tällaisia metodeja suojatuiksi osoittaaksemme, että ne periydyvät, mutta emme käytä niitä ulkopuolella. Muuten, juuri näin niitä on käytetty vanhan sopimuksen mukaan.
Joten, kirjoitetaan kantaluokka suojatulla metodilla:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Hyödynnetään tätä suojattua metodia aliluokassa:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Seuraavassa koodissa tee apumetodista suojattu:
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;
}
}