Prepisovanie metód rodiča v OOP v JavaScripte

Odvodená trieda môže prepísať metódu rodiča vytvorením metódy s rovnakým názvom. Pozrime sa na príklad. Majme nasledujúcu rodičovskú triedu:

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

V odvodenej triede vytvorme metódu s rovnakým názvom:

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

Spravidla sa prepisovanie metód rodiča používa na to, aby sa zmenilo alebo doplnilo správanie tejto metódy. V našom prípade pridajme kontrolu dĺžky mena:

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

Presvedčime sa, že volaná je práve prepísaná metóda. Najprv vytvorme objekt odvodenej triedy:

javascriptlet student = new Student;

Teraz zavolajme našu metódu, odovzdajúc jej korektnú hodnotu:

javascriptstudent.setName('john');

A teraz zavolajme metódu, odovzdajúc jej nekorektnú hodnotu. V dôsledku uvidíme v konzole zvolenú chybu:

javascriptstudent.setName(''); // chyba
Задание 1

V triede User vytvorte getter a setter veku.

Задание 2

V triede Employee prepíšte setter veku a vytvorte v ňom kontrolu, že vek je od 18 do 65 rokov.