Заштићене методе у ООП у ЈаваСкрипту

Приватне методе се не наслеђују и нису видљиве изван класе. Понекад, међутим, потребне су методе које се наслеђују, али нису видљиве изван класе. Такве методе се називају заштићеним (protected) методама. ЈаваСкрипт, нажалост, не подржава такве методе.

Зато предлажем да увесемо одређени договор који омогућава креирање таквих метода. Називе таквих метода ћемо почињати са доњом цртом. У суштини користимо стари општеприхваћени договор о приватним методама, али ћемо их називати заштићеним као знак да се наслеђују, али их нећемо користити изван класе. Управо тако се оне и примењују по овом древном договору.

Дакле, хајде да напишемо родитељску класу са заштићеном методом:

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