Preklapanje metoda roditelja u OOP-u u JavaScript-u

Klasa-potomak može da preklopi metod roditelja, kreirajući metod sa istim imenom. Pogledajmo na primeru. Neka imamo sledeću roditeljsku klasu:

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

Neka u klasi-potomku kreiramo metod sa istim imenom:

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

Uglavnom, preklapanje metoda roditelja je potrebno da bi se promenilo ili dopunilo ponašanje tog metoda. U našem slučaju dodajmo proveru dužine imena:

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

Uverimo se da se poziva upravo preklopljeni metod. Za početak kreirajmo objekat klase potomka:

javascriptlet student = new Student;

Sada pozovimo naš metod, prosledivši u njega korektnu vrednost:

javascriptstudent.setName('john');

A sada pozovimo metod, prosledivši u njega nekorektnu vrednost. Kao rezultat videćemo u konzoli bačenu grešku:

javascriptstudent.setName(''); // greška
Задание 1

U klasi User napravite geter i seter za godine.

Задание 2

U klasi Employee preklopite seter za godine i u njemu napravite proveru da li su godine između 18 i 65 godina.