Pozivanje predefinisanog metoda u OOP-u u JavaScript-u

Prilikom redefinisanja, potomak gubi pristup predefinisanom metodu roditelja. Međutim, i dalje je moguće doći do njega. To se radi pomoću ključne reči super, koja ukazuje na roditeljsku klasu.

Pogledajmo na primeru kada nam može zatrebati pristup roditeljskom metodu. Neka postoji sledeća roditeljska klasa:

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

Neka smo u klasi-potomku redefinisali metod roditelja:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      this.name = name;
    } else {
      throw new Error('greška u imenu studenta');
    }
  }
}

Može se primetiti da u redefinisanom metodu prilikom ispunjenja uslova zapravo izvršava kod roditeljskog metoda. Ispostavlja se nepotrebno dupliranje koda.

Može se od toga osloboditi, ako se pozove metod roditelja. Hajde da to uradimo:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // metod roditelja
    } else {
      throw new Error('greška u imenu studenta');
    }
  }
}
Задание 1

Dat je sledeći kod:

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

U klasi Employee ispravite pojednostavite seter za starost, koristeći originalni metod roditelja.