Geschützte Methoden in OOP in JavaScript
Private Methoden werden nicht vererbt und sind von außerhalb der Klasse nicht sichtbar. Manchmal werden jedoch Methoden benötigt, die vererbt werden, aber von außerhalb der Klasse nicht sichtbar sind. Solche Methoden werden als geschützt (protected) bezeichnet. JavaScript unterstützt leider keine solchen Methoden.
Daher schlage ich vor, eine Konvention einzuführen, die das Erstellen solcher Methoden ermöglicht. Wir werden die Namen solcher Methoden mit einem Unterstrich beginnen. Tatsächlich verwenden wir die alte, allgemein anerkannte Konvention für private Methoden. Allerdings nennen wir solche Methoden geschützt, um anzudeuten, dass sie vererbt werden, wir sie aber nicht von außen verwenden werden. Übrigens werden sie genau so nach der alten Konvention angewendet.
Lassen Sie uns also eine Elternklasse mit einer geschützten Methode schreiben:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Verwenden wir diese geschützte Methode in einer abgeleiteten Klasse:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Machen Sie im folgenden Code die Hilfsmethode geschützt:
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;
}
}