Konstruktor při dědění v OOP v JavaScriptu

Při dědění lze přepsat konstruktor rodiče. Podívejme se na příklad. Předpokládejme, že máme následující třídu rodiče:

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

Předpokládejme, že z rodičovské třídy dědí následující třída:

javascriptclass Student extends User {
  
}

Předpokládejme, že chceme v potomní třídě rozšířit konstruktor přidáním dodatečných parametrů:

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

V tomto případě musíme jako první řádek zavolat konstruktor rodiče pomocí super:

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

Příkaz super je v podstatě konstruktorem rodiče. Proto do něj předejme požadované parametry:

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

Nyní v potomkovi zapišme rok studia do vlastní vlastnosti potomka:

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

Vytvořme getter pro rok studia:

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

Předpokládejme, že třída Employee dědí z třídy User z této lekce.

Задание 2

Přepište v třídě Employee konstruktor rodiče přidáním parametru s věkem a platem.

Задание 3

Vytvořte gettery pro věk a plat.