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:
class 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:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Maak die hulpmetode in die volgende kode beskerm:
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;
}
}