Заштитени методи во ООП во 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;
}
}