Вызов переопределенного метода в ООП в JavaScript

При переопределении потомок теряет доступ к переопределенному методу родителя. Однако, получить к нему доступ все равно можно. Это делается с помощью ключевого слова super, которое указывает на родительский класс.

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

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

Пусть мы в классе-потомке переопределили метод родителя:

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

Можно заметить, что в переопределенном методе при выполнения условия фактически выполняется код родительского метода. Получается не нужное дублирование кода.

Можно от него избавиться, если вызвать метод родителя. Давайте сделаем это:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // метод родителя
    } else {
      throw new Error('student name error');
    }
  }
}
Задание 1

Дан следующий код:

javascriptclass User {
  setAge(age) {
    if (age >= 0) {
      this.age = age;
    } else {
      throw new Error('need age more 0');
    }
  }
}
class Employee {
  setAge(age) {
    if (age <= 120) {
      if (age >= 0) {
        this.age = age;
      } else {
        throw new Error('need age more 0');
      }
    } else {
      throw new Error('need age less 120');
    }
  }
}

В классе Employee исправьте упростите сеттер возраста, использовав оригинальный метод родителя.