JavaScript/extends
extends
編集extends は、JavaScript においてクラスを継承するためのキーワードです。extends
を使用することで、あるクラス(親クラス)のプロパティやメソッドを別のクラス(子クラス)が引き継ぎ、新たな機能を追加できます。この継承機能は、コードの再利用性を高め、オブジェクト指向プログラミングの基礎を提供します。
構文
編集class ChildClass extends ParentClass { // クラスの内容 }
説明
編集- 子クラス(
ChildClass
)は、extends
を使用して親クラス(ParentClass
)を継承します。 - 子クラスは親クラスのすべてのプロパティとメソッドにアクセスできます。ただし、親クラスのプライベートフィールドにはアクセスできません。
- 子クラスでメソッドをオーバーライドすることも可能です。
- 親クラスのコンストラクタを呼び出すためには、子クラスのコンストラクタ内で
super()
を使用します。
使用例
編集// 親クラス class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a noise.`); } } // 子クラス class Dog extends Animal { speak() { console.log(`${this.name} barks.`); } } const dog = new Dog('Rex'); dog.speak(); // Rex barks.
この例では、Dog
クラスが Animal
クラスを継承しています。speak
メソッドをオーバーライドして、Dog
クラス特有の振る舞いを追加しています。
継承の詳細
編集extends
を使ってクラスを継承すると、子クラスはsuper
を利用して親クラスのメソッドやコンストラクタを呼び出すことができます。- 継承の際にクラスではなく、プロトタイプオブジェクトを指定することも可能です。
// プロトタイプオブジェクトから継承 class CustomArray extends Array { customMethod() { console.log('This is a custom array method.'); } } const arr = new CustomArray(); arr.push(1, 2, 3); console.log(arr.length); // 3 arr.customMethod(); // This is a custom array method.
注意点
編集- クラスを継承する場合、子クラスでコンストラクタを定義する際は、
super()
を最初に呼び出す必要があります。これを怠るとエラーが発生します。 - 親クラスが持つ静的メソッドも、
extends
によって継承されます。