Přepsání metod rodiče v OOP v JavaScriptu
Potomkovská třída může přepsat metodu rodiče vytvořením metody se stejným názvem. Podívejme se na příklad. Předpokládejme, že máme následující rodičovskou třídu:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Vytvořme v potomkovské třídě metodu se stejným názvem:
class Student extends User {
setName(name) {
}
}
Přepsání metod rodiče je obvykle potřeba k tomu, aby se změnilo nebo doplnilo chování této metody. V našem případě přidejme kontrolu délky jména:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Přesvědčme se, že je volána právě přepsaná metoda. Nejprve vytvořme objekt potomkovské třídy:
let student = new Student;
Nyní zavolejme naši metodu, předáním korektní hodnoty:
student.setName('john');
A nyní zavolejme metodu, předáním nekorektní hodnoty. V důsledku uvidíme v konzoli vyhozenou chybu:
student.setName(''); // chyba
Ve třídě User vytvořte
getter a setter věku.
Ve třídě Employee přepište
setter věku a proveďte v něm
kontrolu, že věk je od
18 do 65 let.