Metodi protetti in OOP in JavaScript
I metodi privati non vengono ereditati e non sono visibili dall'esterno della classe. A volte, tuttavia, sono necessari metodi che vengono ereditati, ma non sono visibili dall'esterno della classe. Tali metodi sono chiamati protetti (protected). JavaScript, sfortunatamente, non supporta tali metodi.
Pertanto, propongo di introdurre una certa convenzione che consenta di creare tali metodi. Inizieremo i nomi di questi metodi con un trattino basso. In pratica utilizzeremo l'antica convenzione comunemente accettata sui metodi privati. Solo che chiameremo tali metodi protetti per indicare che sono ereditati, ma non li utilizzeremo dall'esterno. Tuttavia, è proprio così che vengono utilizzati secondo l'antica convenzione.
Quindi, scriviamo una classe genitore con un metodo protetto:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Usiamo questo metodo protetto in una classe figlia:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Nel codice seguente, rendi il metodo helper protetto:
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;
}
}