Konstruktor przy dziedziczeniu w OOP w JavaScript

Przy dziedziczeniu można nadpisywać konstruktor rodzica. Spójrzmy na przykładzie. Załóżmy, że mamy następującą klasę rodzica:

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

Załóżmy, że od klasy rodzicielskiej dziedziczy następująca klasa:

javascriptclass Student extends User {
  
}

Załóżmy, że chcemy w klasie-potomku rozszerzyć konstruktor, dodając do niego dodatkowe parametry:

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

W tym przypadku musimy koniecznie w pierwszej linii wywołać konstruktor rodzica za pomocą super:

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

Polecenie super w istocie jest konstruktorem rodzica. Dlatego przekażmy do niego wymagane parametry:

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

Teraz w potomku rok nauki zapiszmy we własnej właściwości potomka:

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

Zróbmy getter dla roku nauki:

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

Załóżmy, że klasa Employee dziedziczy po klasie User z tej lekcji.

Задание 2

Nadpisz w klasie Employee konstruktor rodzica, dodając do niego parametr z wiekiem i wynagrodzeniem.

Задание 3

Zrób gettery dla wieku i wynagrodzenia.