Volanie prepísanej metódy v OOP v JavaScripte

Pri prepisovaní stráca potomok prístup k prepísanej metóde rodiča. Avšak, získať k nej prístup sa napriek tomu dá. Robí sa to pomocou kľúčového slova super, ktoré odkazuje na nadradenú triedu.

Pozrime sa na príklad, kedy nám môže byť potrebný prístup k rodičovskej metóde. Nech máme nasledujúcu triedu-rodiča:

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

Nech sme v triede-potomkovi prepísali metódu rodiča:

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

Možno si všimnúť, že v prepísanej metóde pri splnení podmienky fakticky beží kód rodičovskej metódy. Vzniká tak nepotrebné duplikovanie kódu.

Je sa ho možné zbaviť, ak zavoláme metódu rodiča. Urobme to:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // metóda rodiča
    } else {
      throw new Error('student name error');
    }
  }
}
Задание 1

Daný je nasledujúci kód:

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');
    }
  }
}

V triede Employee opravte zjednodušte setter veku, použite pôvodnú metódu rodiča.