Beskermde metodes in OOP in JavaScript

Privaatmetodes word nie geërf nie en is nie van buite die klas sigbaar nie. Soms is daar egter metodes nodig wat geërf word, maar nie van buite die klas sigbaar is nie. Sulke metodes word beskermde (protected) metodes genoem. JavaScript ondersteun ongelukkig nie sulke metodes nie.

Daarom stel ek voor om 'n ooreenkoms in te voer wat die skep van sulke metodes moontlik maak. Ons sal die name van sulke metodes met 'n onderstreep laat begin. Eintlik gebruik ons die ou algemene ooreenkoms oor private metodes. Net noem ons sulke metodes beskermde as 'n aanduiding dat hulle geërf word, maar ons sal hulle nie van buite gebruik nie. Trouens, dit is presies hoe hulle volgens die ou ooreenkoms toegepas word.

Kom ons skryf dus 'n ouerklas met 'n beskermde metode:

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

Kom ons gebruik hierdie beskermde metode in 'n afstammelingklas:

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

Maak die hulpmetode in die volgende kode beskerm:

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