Переопределение методов родителя в ООП в JavaScript

Класс-потомок может переопределить метод родителя, создав метод с таким же именем. Давайте посмотрим на примере. Пусть у нас есть следующий родительский класс:

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

Давайте в классе-потомке создадим одноименный метод:

javascriptclass Student extends User {
  setName(name) {
    
  }
}

Как правило, переопределение методов родителя нужно для того, чтобы изменить или дополнить поведение этого метода. Давайте в нашем случае добавим проверку длины имени:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('student name error');
    }
  }
}

Давайте убедимся в том, что вызывается именно переопределенный метод. Для начала создадим объект класса потомка:

javascriptlet student = new Student;

Теперь вызовем наш метод, передав в него корректное значение:

javascriptstudent.setName('john');

А теперь вызовем метод, передав в него некорректное значение. В результате увидим в консоли выброшенную ошибку:

javascriptstudent.setName(''); // ошибка
Задание 1

В классе User сделайте геттер и сеттер возраста.

Задание 2

В классе Employee переопределите сеттер возраста и сделайте в нем проверку на то, что возраст от 18 до 65 лет.