JavaScriptのOOPにおける親メソッドのオーバーライド
子クラスは、同じ名前のメソッドを作成することで 親のメソッドをオーバーライドすることができます。 例を見てみましょう。以下の親クラスがあるとします:
class User {
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
子クラスで同名のメソッドを作成しましょう:
class Student extends User {
setName(name) {
}
}
通常、親メソッドのオーバーライドは、 そのメソッドの動作を変更または追加するために行われます。 このケースでは、名前の長さのチェックを追加してみましょう:
class Student extends User {
setName(name) {
if (name.length > 0) {
this.name = name;
} else {
throw new Error('student name error');
}
}
}
オーバーライドされたメソッドが呼び出されていることを確認しましょう。 まず、子クラスのオブジェクトを作成します:
let student = new Student;
次に、適切な値を渡してこのメソッドを呼び出します:
student.setName('john');
今度は、不適切な値を渡してメソッドを呼び出します。 結果として、コンソールにスローされたエラーが表示されます:
student.setName(''); // エラー
Userクラスで、
年齢のゲッターとセッターを作成してください。
Employeeクラスで
年齢のセッターをオーバーライドし、
年齢が18歳から65歳までのチェックを追加してください。