JavaScriptにおけるオブジェクト指向プログラミングでのオーバーライドされたメソッドの呼び出し

オーバーライドを行うと、子クラスは親クラスのオーバーライドされたメソッドへのアクセスを失います。しかし、依然としてそのメソッドにアクセスすることは可能です。これは、親クラスを指すキーワードsuperを使って行うことができます。

親クラスのメソッドへのアクセスが必要となるかもしれない例を見てみましょう。 以下のような親クラスがあるとします:

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

次に、子クラスで親クラスのメソッドをオーバーライドしたとします:

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

オーバーライドされたメソッド内で条件が満たされた場合、実質的には親クラスのメソッドのコードが実行されていることに気づくでしょう。これは不要なコードの重複を招いています。

親クラスのメソッドを呼び出すことで、この重複を取り除くことができます。やってみましょう:

javascriptclass Student extends User {
  setName(name) {
    if (name.length > 0) {
      super.setName(name); // 親クラスのメソッド
    } else {
      throw new Error('student name error');
    }
  }
}
Задание 1

以下のコードがあります:

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

Employeeクラスで、年齢セッターを親クラスの元のメソッドを利用して簡略化してください。