Wywołanie nadpisanej metody w OOP w JavaScript

Przy nadpisywaniu klasa potomna traci dostęp do nadpisanej metody rodzica. Jednakże, dostęp do niej można nadal uzyskać. Robi się to za pomocą słowa kluczowego super, które wskazuje na klasę rodzica.

Spójrzmy na przykład, kiedy może nam być potrzebny dostęp do metody rodzica. Załóżmy, że mamy następującą klasę-rodzica:

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

Załóżmy, że w klasie-potomnej nadpisaliśmy metodę rodzica:

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

Można zauważyć, że w nadpisanej metodzie przy spełnieniu warunku faktycznie wykonywany jest kod metody rodzica. Wynika z tego niepotrzebne powielanie kodu.

Można się go pozbyć, jeśli wywoła się metodę rodzica. Zróbmy to:

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

Dany jest następujący kod:

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

W klasie Employee popraw, uprość setter wieku, wykorzystując oryginalną metodę rodzica.