Aufruf einer überschriebenen Methode in OOP in JavaScript
Beim Überschreiben verliert der Nachkomme den
Zugriff auf die überschriebene Methode
des Elternteils. Dennoch kann man darauf
zugreifen. Dies geschieht
mit dem Schlüsselwort super,
das auf die Elternklasse verweist.
Schauen wir uns ein Beispiel an, bei dem wir Zugriff auf die Elternmethode benötigen könnten. Nehmen wir an, wir haben die folgende Elternklasse:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Nehmen wir an, wir haben in der Nachkommenklasse die Methode des Elternteils überschrieben:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Man kann feststellen, dass im überschriebenen Methode bei Erfüllung der Bedingung praktisch der Code der Elternmethode ausgeführt wird. Es ergibt sich eine unnötige Code-Duplizierung.
Man kann diese beseitigen, indem man die Methode des Elternteils aufruft. Tun wir das:
class Student extends User {
setName(name) {
if (name.length > 0) {
super.setName(name); // Methode des Elternteils
} else {
throw new Error('student name error');
}
}
}
Gegeben ist der folgende 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 der Klasse Employee korrigieren Sie
und vereinfachen Sie den Age-Setter, indem Sie
die Originalmethode des Elternteils verwenden.