Volání přepsané metody v OOP v JavaScriptu

Při přepisování metody potomek ztrácí přístup k přepsané metodě rodiče. Nicméně, přístup k ní lze stále získat. To se dělá pomocí klíčového slova super, které odkazuje na rodičovskou třídu.

Podívejme se na příklad, kdy můžeme potřebovat přístup k rodičovské metodě. Předpokládejme, že máme následující rodičovskou třídu:

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

Předpokládejme, že jsme v třídě-potomkovi přepsali metodu rodiče:

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

Lze si všimnout, že v přepsané metodě při splnění podmínky je fakticky proveden kód rodičovské metody. Vzniká tak zbytečné duplikování kódu.

Lze se toho zbavit, pokud zavoláme metodu rodiče. Udělejme to:

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

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

Ve třídě Employee opravte zjednodušte setter věku, použijte originální metodu rodiče.