Apelarea metodei suprascrise în OOP în JavaScript

La suprascriere, clasa derivată pierde accesul la metoda suprascrisă a părintelui. Cu toate acestea, accesul la ea poate fi obținut oricum. Acest lucru se face cu ajutorul cuvântului cheie super, care indică clasa părinte.

Să ne uităm la un exemplu când am putea avea nevoie de acces la metoda părintelui. Să presupunem că avem următoarea clasă părinte:

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

Să presupunem că în clasa derivată am suprascris metoda părintelui:

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

Se poate observa că în metoda suprascrisă la îndeplinirea condiției, de fapt, se execută codul metodei părintelui. Rezultă o duplicare inutilă a codului.

Ne putem debarasa de ea dacă apelăm metoda părintelui. Să facem acest lucru:

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

Este dat următorul cod:

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

În clasa Employee corectați setter-ul vârstei, utilizând metoda originală a părintelui.