Yliluokan metodien ylikirjoittaminen OOP:ssa JavaScriptissä
Aliluokka voi ylikirjoittaa yliluokan metodin luomalla metodin samalla nimellä. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava yliluokka:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
Luodaanpa aliluokassa saman niminen metodi:
class Student extends User {
setName(name) {
}
}
Yleensä yliluokan metodien ylikirjoittaminen tarvitaan muuttaakseen tai täydentääkseen kyseisen metodin toimintaa. Lisätäänpä meidän tapauksessamme pituustarkistus nimelle:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
Varmistetaan, että kutsutaan nimenomaan ylikirjoitettua metodia. Aluksi luodaan olio aliluokasta:
let student = new Student;
Nyt kutsutaan metodia, antamalla sille oikean arvon:
student.setName('john');
Ja nyt kutsutaan metodia antamalla sille väärä arvo. Lopputuloksena näemme konsolissa heitetyn virheen:
student.setName(''); // virhe
Luokassa User tee
iän getter ja setter.
Luokassa Employee ylikirjoita
iän setter ja tee siihen
tarkistus, että ikä on
18 ja 65 vuoden välillä.