Konstruktor pri dedovanju v OOP v JavaScriptu

Pri dedovanju je mogoče redefinirati konstruktor starša. Poglejmo si na primeru. Naj imamo naslednji razred starša:

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

Naj od starševskega razreda deduje naslednji razred:

javascriptclass Student extends User {
  
}

Naj želimo v razredu-potomcu razširiti konstruktor, tako da mu dodamo dodatne parametre:

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

V tem primeru moramo obvezno v prvi vrstici poklicati konstruktor starša z super:

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

Ukaz super je v bistvu konstruktor starša. Zato mu posredujemo zahtevane parametre:

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

Zdaj v potomcu leto študija zapišimo v lastno lastnost potomca:

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

Naredimo getter za leto študija:

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

Naj razred Employee deduje od razreda User iz te lekcije.

Задание 2

Redefinirajte v razredu Employee konstruktor starša, tako da mu dodate parameter s starostjo in plačo.

Задание 3

Naredite getterje za starost in plačo.