Beskyttede metoder i OOP i JavaScript
Private metoder arves ikke og er ikke synlige utenfor klassen. Noen ganger trengs det imidlertid metoder som arves, men ikke er synlige utenfor klassen. Slike metoder kalles beskyttede (protected). JavaScript støtter dessverre ikke slike metoder.
Derfor foreslår jeg å innføre en viss konvensjon som tillater å opprette slike metoder. La oss starte navnene på slike metoder med understrek. Faktisk bruker vi den gamle allment aksepterte konvensjonen om private metoder. Bare vi kaller slike metoder beskyttede for å indikere at de arves, men vi vil ikke bruke dem utenfor. Forresten, det er slik de brukes i henhold til den gamle konvensjonen.
Så la oss skrive en foreldreklasse med en beskyttet metode:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
La oss bruke denne beskyttede metoden i en underklasse:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
I følgende kode, gjør hjelpemetoden beskyttet:
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;
}
}