Заштитени методи во ООП во JavaScript

Приватните методи не се наследуваат и не се видливи надвор од класата. Понекогаш, сепак, потребни се методи, кои се наследуваат, но не се видливи надвор од класата. Таквите методи се нарекуваат заштитени (protected). JavaScript, за жал, не ги поддржува таквите методи.

Затоа предлагам да воведеме одреден договор, кој овозможува креирање на такви методи. Ќе ги започнуваме имињата на таквите методи со подвлекување. Всушност ќе го користиме стариот општоприфатен договор за затворени методи. Само што таквите методи ги нарекуваме заштитени како знак дека тие се наследуваат, но ние нема да ги користиме надвор. Сепак, токму така тие и се применуваат според древниот договор.

Значи, ајде да напишеме родителска класа со заштитен метод:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this._capeFirst(this.name);
  }
  
  _capeFirst(str) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Да го искористиме овој заштитен метод во изведената класа:

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this._capeFirst(this.surn);
  }
}
Задание 1

Во следниот код направете го помошниот метод заштитен:

javascriptclass 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;
  }
}