Конструктор при наследување во ООП во JavaScript

При наследување може да се преопределува конструкторот на родителот. Ајде да погледнеме на пример. Нека имаме следнава класа на родител:

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

Нека од родителската класа наследува следнава класа:

javascriptclass Student extends User {
  
}

Нека сакаме во класата-потомок да ја прошириме конструкторот, додавајќи во него дополнителни параметри:

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

Во овој случај, задолжително треба во првиот ред да го повикаме конструкторот на родителот преку super:

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

Командата super во суштина е конструктор на родителот. Затоа, да ги пренесеме во него потребните параметри:

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

Сега во потомокот, годината на студии да ја запишеме во својство на потомокот:

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

Да направиме гетер за годината на студии:

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

Нека класата Employee наследува од класата User од оваа лекција.

Задание 2

Преопределете ја во класата Employee конструкторот на родителот, додавајќи во него параметар за возраста и платата.

Задание 3

Направете гетери за возраста и платата.