JavaScriptの継承とは?クラスの機能を引き継ぐ仕組みを解説
JavaScriptでは、クラスの「継承(Inheritance)」という仕組みを使って、既存のクラスの機能を新しいクラスに引き継ぐことができます。
継承を使うことで、コードの重複を避け、効率よく再利用性の高いプログラムを書くことができます。
この記事では、JavaScriptの継承の基本構文や、extends
、super()
の使い方についてわかりやすく解説します。
継承とは?
継承とは、あるクラスの機能を別のクラスに引き継ぐ仕組みです。
共通する処理を親クラスにまとめることで、子クラスでは追加・上書き(オーバーライド)だけに集中できます。
基本構文(extends)
class 親クラス {
// 共通の処理
}
class 子クラス extends 親クラス {
// 追加・上書きの処理
}
例:
class Animal {
speak() {
console.log("何かが鳴いています");
}
}
class Dog extends Animal {
speak() {
console.log("ワンワン!");
}
}
const dog = new Dog();
dog.speak(); // ワンワン!
Dog
クラスは Animal
を継承しており、speak()
メソッドを独自に定義しています。
親クラスのメソッドを使う
子クラスで super.メソッド名()
を使えば、親クラスのメソッドを呼び出すことができます。
class Cat extends Animal {
speak() {
super.speak(); // 親の speak を呼ぶ
console.log("ニャー!");
}
}
const cat = new Cat();
cat.speak();
// 出力:
// 何かが鳴いています
// ニャー!
コンストラクタの継承とsuper()
子クラスで constructor
を使うときは、必ず先に super()
を呼び出す必要があります。
class Animal {
constructor(name) {
this.name = name;
}
}
class Bird extends Animal {
constructor(name, color) {
super(name); // 親クラスの constructor を呼ぶ
this.color = color;
}
}
super(name)
で親クラスの初期化を行い、その後で子クラス独自のプロパティを設定します。
継承のメリット
- 共通の処理を親クラスにまとめて再利用できる
- 子クラスで必要な部分だけ追加・上書きできる
- コードが整理され、保守性が向上する
オーバーライドとは?
親クラスで定義されたメソッドを、子クラスで同じ名前で上書きすることを「オーバーライド」と呼びます。
オーバーライドによって、子クラスごとの振る舞いをカスタマイズできます。
まとめ
extends
を使ってクラスを継承する
super()
で親のconstructorを呼び出す
super.メソッド名()
で親メソッドも使える
- 継承によりコードの再利用と整理がしやすくなる
JavaScriptのクラス継承は、効率的なコード設計に欠かせない仕組みです。
まずはシンプルな親子関係の例から試し、super
と extends
の動作を確認してみましょう。