Chamando um método sobrescrito em POO em JavaScript

Ao sobrescrever um método, o filho perde acesso ao método sobrescrito do pai. No entanto, ainda é possível acessá-lo. Isso é feito usando a palavra-chave super, que se refere à classe pai.

Vamos ver um exemplo de quando podemos precisar de acesso ao método do pai. Suponha que temos a seguinte classe pai:

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

Suponha que na classe filha sobrescrevemos o método do pai:

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

Perceba que no método sobrescrito, quando a condição é atendida, essencialmente o código do método do pai é executado. Isso resulta em uma duplicação desnecessária de código.

Podemos evitá-la chamando o método do pai. Vamos fazer isso:

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

Dado o seguinte código:

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

Na classe Employee, corrija e simplifique o setter de idade, usando o método original do pai.