Przesłanianie metod rodzica w OOP w JavaScript

Klasa potomna może przesłonić metodę rodzica, tworząc metodę o tej samej nazwie. Spójrzmy na przykład. Załóżmy, że mamy następującą klasę nadrzędną:

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

Stwórzmy metodę o tej samej nazwie w klasie potomnej:

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

Zazwyczaj przesłanianie metod rodzica jest potrzebne po to, aby zmienić lub uzupełnić zachowanie tej metody. W naszym przypadku dodajmy sprawdzenie długości imienia:

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

Upewnijmy się, że wywoływana jest właśnie przesłonięta metoda. Na początek stwórzmy obiekt klasy potomnej:

javascriptlet student = new Student;

Teraz wywołajmy naszą metodę, przekazując do niej poprawne wartości:

javascriptstudent.setName('john');

A teraz wywołajmy metodę, przekazując do niej niepoprawną wartość. W rezultacie zobaczymy w konsoli wyrzucony błąd:

javascriptstudent.setName(''); // błąd
Задание 1

W klasie User zrób getter i setter wieku.

Задание 2

W klasie Employee przesłoń setter wieku i zrób w nim sprawdzenie, czy wiek jest od 18 do 65 lat.