Prepisovanie metód rodiča v OOP v JavaScripte
Odvodená trieda môže prepísať metódu rodiča vytvorením metódy s rovnakým názvom. Pozrime sa na príklad. Majme nasledujúcu rodičovskú triedu:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
V odvodenej triede vytvorme metódu s rovnakým názvom:
class Student extends User {
setName(name) {
}
}
Spravidla sa prepisovanie metód rodiča používa na to, aby sa zmenilo alebo doplnilo správanie tejto metódy. V našom prípade pridajme kontrolu dĺžky mena:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Presvedčime sa, že volaná je práve prepísaná metóda. Najprv vytvorme objekt odvodenej triedy:
let student = new Student;
Teraz zavolajme našu metódu, odovzdajúc jej korektnú hodnotu:
student.setName('john');
A teraz zavolajme metódu, odovzdajúc jej nekorektnú hodnotu. V dôsledku uvidíme v konzole zvolenú chybu:
student.setName(''); // chyba
V triede User vytvorte
getter a setter veku.
V triede Employee prepíšte
setter veku a vytvorte v ňom
kontrolu, že vek je od
18 do 65 rokov.