Overstyrning av foreldremetoder i OOP i JavaScript

En underklasse kan overstyre en metode fra foreldreklassen ved å opprette en metode med samme navn. La oss se på et eksempel. La oss si at vi har følgende foreldreklasse:

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

La oss i underklassen opprette en metode med samme navn:

javascriptclass Student extends User {
  setName(name) {
    
  }
}

Vanligvis er hensikten med å overstyre metoder fra foreldreklassen å endre eller supplere oppførselen til denne metoden. La oss i vårt tilfelle legge til en sjekk av navnelengden:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('student name error');
    }
  }
}

La oss forsikre oss om at det er den overstyrte metoden som kalles. La oss først opprette et objekt av underklassen:

javascriptlet student = new Student;

La oss nå kalle metoden vår, og gi den en korrekt verdi:

javascriptstudent.setName('john');

La oss nå kalle metoden, og gi den en ukorrekt verdi. Som et resultat vil vi se en utløst feil i konsollen:

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

I klassen User skal du lage getter og setter for alder.

Задание 2

I klassen Employee skal du overstyre setteren for alder og implementere en sjekk for at alderen er mellom 18 og 65 år.