Zaštićene metode u OOP u JavaScriptu

Privatne metode se ne nasleđuju i nisu vidljive spolja klase. Međutim, ponekad su potrebne metode koje se nasleđuju, ali nisu vidljive spolja klase. Takve metode se nazivaju zaštićenim (protected) metodama. JavaScript, nažalost, ne podržava takve metode.

Stoga predlažem da uvedemo određeni dogovor koji omogućava kreiranje takvih metoda. Počećemo imena takvih metoda sa donjom crtom. U suštini koristimo staru opšteprihvaćenu konvenciju o privatnim metodama. Samo ćemo takve metode zvati zaštićenim kao znak da se nasleđuju, ali ih nećemo koristiti spolja. Uostalom, upravo se tako one i koriste po drevnoj konvenciji.

Dakle, hajde da napišemo roditeljsku klasu sa zaštićenom metodom:

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

Iskoristimo ovu zaštićenu metodu u izvedenoj klasi:

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

U sledećem kodu napravite pomoćnu metodu zaštićenom:

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