Yliluokan metodien ylikirjoittaminen OOP:ssa JavaScriptissä

Aliluokka voi ylikirjoittaa yliluokan metodin luomalla metodin samalla nimellä. Katsotaanpa esimerkkiä. Oletetaan, että meillä on seuraava yliluokka:

javascriptclass User {
  setName(name) {
    this.name = name;
  }
  getName() {
    return this.name;
  }
}

Luodaanpa aliluokassa saman niminen metodi:

javascriptclass 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:

javascriptclass 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:

javascriptlet student = new Student;

Nyt kutsutaan metodia, antamalla sille oikean arvon:

javascriptstudent.setName('john');

Ja nyt kutsutaan metodia antamalla sille väärä arvo. Lopputuloksena näemme konsolissa heitetyn virheen:

javascriptstudent.setName(''); // virhe
Задание 1

Luokassa User tee iän getter ja setter.

Задание 2

Luokassa Employee ylikirjoita iän setter ja tee siihen tarkistus, että ikä on 18 ja 65 vuoden välillä.