Konstruktor pri nasleđivanju u OOP-u u JavaScript-u

Pri nasleđivanju je moguće redefinisati konstruktor roditelja. Pogledajmo to na primeru. Neka imamo sledeću klasu roditelja:

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

Neka od roditeljske klase nasleđuje sledeća klasa:

javascriptclass Student extends User {
  
}

Pretpostavimo da u klasi-potomku želimo da proširimo konstruktor, dodajući mu dodatne parametre:

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

U ovom slučaju, obavezno nam je prvom linijom pozvati konstruktor roditelja putem super:

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

Komanda super je u suštini konstruktor roditelja. Stoga, prosledimo mu tražene parametre:

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

Sada u potomku upisaćemo godinu studija u sopstveno svojstvo potomka:

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

Napravićemo geter za godinu studija:

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

Neka klasa Employee nasleđuje od klase User iz ove lekcije.

Задание 2

Redefinišite u klasi Employee konstruktor roditelja, dodajući u njega parametre za godine i platu.

Задание 3

Napravite getere za godine i platu.