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