Överskridande av föräldrametoder i OOP i JavaScript
En underklass kan åsidosätta en förälders metod genom att skapa en metod med samma namn. Låt oss titta på ett exempel. Låt oss säga att vi har följande förälderklass:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Låt oss i underklassen skapa en metod med samma namn:
class Student extends User {
setName(name) {
}
}
Vanligtvis behövs åsidosättande av metoder från föräldern för att ändra eller komplettera beteendet hos denna metod. Låt oss i vårt fall lägga till en kontroll av namnets längd:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Låt oss försäkra oss om att det är just den åsidosatta metoden som anropas. Låt oss först skapa ett objekt av underklassen:
let student = new Student;
Låt oss nu anropa vår metod, och skicka ett korrekt värde:
student.setName('john');
Låt oss nu anropa metoden och skicka ett ogiltigt värde. Som ett resultat kommer vi att se ett kastat fel i konsolen:
student.setName(''); // error
I klassen User, skapa
en getter och setter för ålder.
I klassen Employee, åsidosätt
ålderssettern och gör i den
en kontroll att åldern är från
18 till 65 år.