Suprascrierea metodelor părinților în OOP în JavaScript
O clasă copil poate suprascrie metoda părintelui, creând o metodă cu același nume. Să ne uităm la un exemplu. Să presupunem că avem următoarea clasă părinte:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Să creăm o metodă cu același nume în clasa copil:
class Student extends User {
setName(name) {
}
}
De obicei, suprascrierea metodelor părintelui este necesară pentru a modifica sau a completa comportamentul acelei metode. În cazul nostru, să adăugăm o verificare a lungimii numelui:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Să ne asigurăm că este apelată exact metoda suprascrisă. Mai întâi să creăm un obiect al clasei copil:
let student = new Student;
Acum să apelăm metoda noastră, transmițându-i o valoare corectă:
student.setName('john');
Și acum să apelăm metoda, transmitându-i o valoare incorectă. Ca rezultat, vom vedea în consolă o eroare aruncată:
student.setName(''); // eroare
În clasa User faceți
un getter și un setter pentru vârstă.
În clasa Employee suprascrieți
setter-ul vârstei și faceți în el
o verificare că vârsta este de la
18 până la 65 de ani.