Appel d'une méthode surchargée en POO en JavaScript
Lors de la surcharge, l'enfant perd
l'accès à la méthode surchargée
du parent. Cependant, il est toujours
possible d'y accéder. Cela se fait
à l'aide du mot-clé super,
qui fait référence à la classe parente.
Regardons un exemple où nous pourrions avoir besoin d'accéder à la méthode parente. Supposons que nous ayons la classe parente suivante :
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Supposons que nous ayons surchargé la méthode du parent dans la classe enfant :
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
On peut remarquer que dans la méthode surchargée, lorsque la condition est remplie, le code de la méthode parente est essentiellement exécuté. Cela entraîne une duplication de code inutile.
On peut s'en débarrasser en appelant la méthode du parent. Faisons cela :
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // méthode du parent
} else {
throw new Error('student name error');
}
}
}
Voici le code suivant :
class User {
setAge(age) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
}
}
class Employee {
setAge(age) {
if (age <= 120) {
if (age >= 0) {
this.age = age;
} else {
throw new Error('need age more 0');
}
} else {
throw new Error('need age less 120');
}
}
}
Dans la classe Employee, corrigez et
simplifiez le mutateur d'âge en utilisant
la méthode originale du parent.