Méthodes protégées en POO en JavaScript
Les méthodes privées ne sont pas héritées et ne sont pas visibles de l'extérieur de la classe. Cependant, il est parfois nécessaire d'avoir des méthodes qui sont héritées, mais non visibles de l'extérieur de la classe. De telles méthodes sont appelées protégées (protected). JavaScript, malheureusement, ne prend pas en charge de telles méthodes.
C'est pourquoi je propose d'introduire une certaine convention permettant de créer de telles méthodes. Nous commencerons les noms de ces méthodes par un trait de soulignement. En fait, nous utilisons l'ancienne convention largement acceptée pour les méthodes privées. Seulement, nous appelons ces méthodes protégées pour signifier qu'elles sont héritées, mais nous ne les utiliserons pas de l'extérieur. C'est d'ailleurs exactement ainsi qu'elles sont utilisées selon l'ancienne convention.
Alors, écrivons une classe parent avec une méthode protégée :
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Utilisons cette méthode protégée dans une classe enfant :
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Dans le code suivant, rendez la méthode utilitaire protégée :
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;
}
}