Oproepen van een overschreven methode in OOP in JavaScript
Bij overschrijven verliest de afstammeling
toegang tot de overschreven methode
van de ouder. Het is echter nog steeds
mogelijk om er toegang toe te krijgen. Dit wordt gedaan
met behulp van het sleutelwoord super,
dat verwijst naar de bovenliggende
klasse.
Laten we een voorbeeld bekijken waarin we toegang nodig kunnen hebben tot de ouder methode. Stel dat we de volgende ouderklasse hebben:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Stel dat we in de afstammelingsklasse de methode van de ouder hebben overschreven:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Merk op dat in de overschreven methode, wanneer aan de voorwaarde is voldaan, feitelijk de code van de ouder methode wordt uitgevoerd. Dit resulteert in onnodige code-duplicatie.
We kunnen dit elimineren door de methode van de ouder aan te roepen. Laten we dit doen:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // methode van de ouder
} else {
throw new Error('student name error');
}
}
}
Gegeven de volgende code:
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');
}
}
}
In de klasse Employee, verbeter
vereenvoudig de leeftijdssetter door gebruik te maken van
de originele methode van de ouder.