Защитени методи в ООП в JavaScript
Частните методи не се наследяват и не се виждат отвън класа. Понякога обаче са необходими методи, които се наследяват, но не се виждат отвън класа. Такива методи се наричат защитени (protected). JavaScript, за съжаление, не поддържа такива методи.
Затова предлагам да въведем някакво споразумение, позволяващо създаването на такива методи. Ще започваме имената на такива методи с долна черта. Фактически ние използваме старото общоприето споразумение за частни методи. Само наричаме такива методи защитени в знак на това, че те се наследяват, но ние няма да ги използваме отвън. Въпреки това, точно така те се прилагат по древното споразумение.
И така, нека напишем родителски клас с защитен метод:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Нека използваме този защитен метод в дъщерния клас:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
В следния код направете помощния метод защитен:
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;
}
}