Sovrascrivere i metodi del genitore in OOP in JavaScript

Una classe figlia può sovrascrivere un metodo del genitore, creando un metodo con lo stesso nome. Vediamo un esempio. Supponiamo di avere la seguente classe genitore:

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

Creiamo un metodo con lo stesso nome nella classe figlia:

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

Di solito, la sovrascrittura dei metodi del genitore serve per modificare o integrare il comportamento di tale metodo. Nel nostro caso, aggiungiamo un controllo sulla lunghezza del nome:

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

Assicuriamoci che venga chiamato proprio il metodo sovrascritto. Per prima cosa creiamo un oggetto della classe figlia:

javascriptlet student = new Student;

Ora chiamiamo il nostro metodo, passandogli un valore corretto:

javascriptstudent.setName('john');

Ora chiamiamo il metodo, passando un valore non corretto. Di conseguenza, vedremo nella console un errore generato:

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

Nella classe User create un getter e un setter per l'età.

Задание 2

Nella classe Employee sovrascrivete il setter dell'età e aggiungete un controllo per verificare che l'età sia compresa tra 18 e 65 anni.