JavaScriptでクラスを継承(派生)する際のconstructor(コンストラクタ)の使い方について説明します。
クラスを継承する場合、extendsキーワードを使います。派生クラス(サブクラス)のコンストラクタ内で親クラス(スーパークラス)のコンストラクタを呼び出すには、superキーワードを使用します。
以下に、基本的な例を示します。
class Parent {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
class Child extends Parent {
constructor(name, age) {
// 親クラスのコンストラクタを呼び出す
super(name);
this.age = age;
}
greet() {
// 親クラスのメソッドを呼び出す
super.greet();
console.log(`I am ${this.age} years old`);
}
}
const childInstance = new Child('John', 12);
childInstance.greet();
// 出力:
// Hello, my name is John
// I am 12 years old
この例では、Parentクラスがnameプロパティを持ち、greetメソッドを定義しています。ChildクラスはParentクラスを継承し、nameに加えてageプロパティを持ちます。Childクラスのコンストラクタでは、super(name)を使って親クラスのコンストラクタを呼び出し、nameプロパティを初期化しています。また、greetメソッドをオーバーライドして、親クラスのgreetメソッドを呼び出し、その後にageプロパティを表示するようにしています。
重要なポイントは以下の通りです:
superの呼び出し:派生クラスのコンストラクタ内でthisを使う前にsuperを呼び出す必要があります。
メソッドのオーバーライド:親クラスのメソッドを派生クラスでオーバーライドする場合、必要に応じてsuperキーワードを使って親クラスのメソッドを呼び出すことができます。
これにより、派生クラスが親クラスの機能を継承しつつ、新しい機能やプロパティを追加できます。