Přepsání metod rodiče v OOP v JavaScriptu

Potomkovská třída může přepsat metodu rodiče vytvořením metody se stejným názvem. Podívejme se na příklad. Předpokládejme, že máme následující rodičovskou třídu:

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

Vytvořme v potomkovské třídě metodu se stejným názvem:

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

Přepsání metod rodiče je obvykle potřeba k tomu, aby se změnilo nebo doplnilo chování této metody. V našem případě přidejme kontrolu délky jména:

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

Přesvědčme se, že je volána právě přepsaná metoda. Nejprve vytvořme objekt potomkovské třídy:

javascriptlet student = new Student;

Nyní zavolejme naši metodu, předáním korektní hodnoty:

javascriptstudent.setName('john');

A nyní zavolejme metodu, předáním nekorektní hodnoty. V důsledku uvidíme v konzoli vyhozenou chybu:

javascriptstudent.setName(''); // chyba
Задание 1

Ve třídě User vytvořte getter a setter věku.

Задание 2

Ve třídě Employee přepište setter věku a proveďte v něm kontrolu, že věk je od 18 do 65 let.