Costruttore nell'ereditarietà in OOP in JavaScript

Nell'ereditarietà è possibile sovrascrivere il costruttore del genitore. Osserviamo con un esempio. Supponiamo di avere la seguente classe genitore:

javascriptclass User {
  constructor(name, surn) {
    this.name = name;
    this.surn = surn;
  }
  
  getName() {
    return this.name;
  }
  getSurn() {
    return this.surn;
  }
}

Supponiamo che dalla classe genitore erediti la seguente classe:

javascriptclass Student extends User {
  
}

Supponiamo di voler estendere il costruttore nella classe figlia, aggiungendo parametri aggiuntivi:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    
  }
}

In questo caso dobbiamo obbligatoriamente richiamare il costruttore del genitore tramite super come prima istruzione:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    super();
  }
}

Il comando super è essenzialmente il costruttore del genitore. Pertanto passiamogli i parametri richiesti:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    super(name, surn);
  }
}

Ora nel figlio assegniamo l'anno di corso in una proprietà propria del figlio:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    super(name, surn);
    this.year = year;
  }
}

Creiamo un getter per l'anno di corso:

javascriptclass Student extends User {
  constructor(name, surn, year) {
    super(name, surn);
    this.year = year;
  }
  
  getYear() {
    return this.year;
  }
}
Задание 1

Supponiamo che la classe Employee erediti dalla classe User di questa lezione.

Задание 2

Sovrascrivi nella classe Employee il costruttore del genitore, aggiungendovi un parametro per l'età e lo stipendio.

Задание 3

Crea i getter per l'età e lo stipendio.