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:

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

Să creăm o metodă cu același nume în clasa copil:

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

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

javascriptlet student = new Student;

Acum să apelăm metoda noastră, transmițându-i o valoare corectă:

javascriptstudent.setName('john');

Și acum să apelăm metoda, transmitându-i o valoare incorectă. Ca rezultat, vom vedea în consolă o eroare aruncată:

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

În clasa User faceți un getter și un setter pentru vârstă.

Задание 2

Î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.