Презаписване на методи на родителя в ООП в 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 години.