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

Сделайте геттеры для возраста и зарплаты.