Конструктор при наследяване в ООП в 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

Създайте гетъри за възрастта и заплатата.