Preklapanje metoda roditelja u OOP-u u JavaScript-u
Klasa-potomak može da preklopi metod roditelja, kreirajući metod sa istim imenom. Pogledajmo na primeru. Neka imamo sledeću roditeljsku klasu:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Neka u klasi-potomku kreiramo metod sa istim imenom:
class Student extends User {
setName(name) {
}
}
Uglavnom, preklapanje metoda roditelja je potrebno da bi se promenilo ili dopunilo ponašanje tog metoda. U našem slučaju dodajmo proveru dužine imena:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Uverimo se da se poziva upravo preklopljeni metod. Za početak kreirajmo objekat klase potomka:
let student = new Student;
Sada pozovimo naš metod, prosledivši u njega korektnu vrednost:
student.setName('john');
A sada pozovimo metod, prosledivši u njega nekorektnu vrednost. Kao rezultat videćemo u konzoli bačenu grešku:
student.setName(''); // greška
U klasi User napravite
geter i seter za godine.
U klasi Employee preklopite
seter za godine i u njemu napravite
proveru da li su godine između
18 i 65 godina.