Klicanje preglasene metode v OOP v JavaScriptu

Pri preglasitvi potomec izgubi dostop do preglasene metode starša. Vendar pa je do njega še vedno mogoče pridobiti dostop. To se naredi s ključno besedo super, ki kaže na nadrejeni razred.

Poglejmo si primer, kdaj bomo morda potrebovali dostop k metodi starša. Recimo, da imamo naslednji razred-starš:

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

Recimo, da smo v razredu-potomcu preglasili metodo starša:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('napaka imena študenta');
    }
  }
}

Opazimo lahko, da se v preglaseni metodi ob izpolnjevanju pogoja dejansko izvede koda metode starša. Izkazalo se je, da je nepotrebno podvajanje kode.

Lahko se ga znebimo, če pokličemo metodo starša. Naredimo to:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // metoda starša
    } else {
      throw new Error('napaka imena študenta');
    }
  }
}
Задание 1

Podana je naslednja koda:

javascriptclass User {
  setAge(age) {
    if (age >= 0) {
      this.age = age;
    } else {
      throw new Error('potrebna starost večja od 0');
    }
  }
}
class Employee {
  setAge(age) {
    if (age <= 120) {
      if (age >= 0) {
        this.age = age;
      } else {
        throw new Error('potrebna starost večja od 0');
      }
    } else {
      throw new Error('potrebna starost manjša od 120');
    }
  }
}

V razredu Employee popravite poenostavite nastavitev starosti z uporabo izvirne metode starša.