Hierarchia dziedziczenia klas w OOP w JavaScript

Można wykonywać dziedziczenie od klasy, która sama jest potomkiem. Spójrzmy na przykładzie. Załóżmy, że mamy następującą klasę nadrzędną:

javascriptclass User {
  setName(name) {
    this._name = name;
  }
  getName() {
    return this._name;
  }
}

Od tej klasy dziedziczy następująca klasa:

javascriptclass Student extends User {
  setYear(year) {
    this._year = year;
  }
  getYear() {
    return this._year;
  }
}

A od tej klasy dziedziczy kolejna klasa:

javascriptclass StudentProgrammer extends Student {
  setSkill(skill) {
    this._skill = skill;
  }
  getSkill() {
    return this._skill;
  }
}
Задание 1

Stwórz klasę Employee, która będzie dziedziczyć po klasie User.

Задание 2

Stwórz klasę Programmer, która będzie dziedziczyć po klasie Employee.

Задание 3

Stwórz klasę Designer, która będzie dziedziczyć po klasie Employee.

Задание 4

Dodaj do stworzonych przez siebie klas różne metody.