JavaScriptで基底クラスのメソッドをオーバーライドで上書きする方法について詳しく解説します。
基底クラスのメソッドを上書きするにはどうしたらいいですか?
基底クラスのメソッドを上書きするにはオーバーライドを利用します。
サブクラスからスーパークラスのメソッドを呼び出す方法
サブクラスからスーパークラスのメソッドを呼び出すには、super
キーワードを使用します。このsuper
キーワードは、親クラスのメソッドを呼び出すためのものです。
例えば、以下のようなクラスがあります。
class Animal {
move() {
console.log("動きます");
}
}
class Dog extends Animal {
move() {
console.log("走ります");
}
}
ここで、Dog
クラスはAnimal
クラスを継承しています。また、Dog
クラスはmove
メソッドをオーバーライドしています。
オーバーライドの実装方法
サブクラスからスーパークラスのメソッドを上書きするための機能を「オーバーライド」と呼びます。
オーバーライドは、サブクラスに同じ名前のメソッドを定義することで実現します。
例えば、以下のようなクラスがあります。
class Animal {
move() {
console.log("動きます");
}
}
ここで、Animal
クラスにはmove
メソッドが定義されています。このmove
メソッドを、以下のようなサブクラスで上書きすることができます。
class Dog extends Animal {
move() {
console.log("走ります");
}
}
ここで、Dog
クラスはAnimal
クラスを継承しています。また、Dog
クラスにはmove
メソッドが定義されています。このmove
メソッドは、Animal
クラスのmove
メソッドを上書きすることで、独自の処理を定義することができます。
このとき、Dog
クラスからAnimal
クラスのmove
メソッドを呼び出すには、以下のようにします。
class Dog extends Animal {
move() {
super.move();
console.log("走ります");
}
}
このように、super.move()
と記述することで、Animal
クラスのmove
メソッドが呼び出されます。
オーバーライドは上書きといいつつも、基底クラスの機能を完全に書き換えることは稀で、上記のように基底クラスの機能を流用しつつ、差分の機能を追加するような使い方が一般的です。
以上が、JavaScriptでオーバーライドの実装方法についての解説です。
プロパティのオーバーライドについて
JavaScriptにおいては、プロパティは直接的にはオーバーライドすることはできません。
代わりに、サブクラスで新たなプロパティを定義することで同名のプロパティを上書きすることはできますが、継承元のプロパティを書き換えることはできません。また、継承元のプロパティを直接参照することもできます。
以下は、サブクラスで新たなプロパティを定義することで継承元のプロパティを上書きするサンプルコードです。
class Animal {
constructor(name, type) {
this.name = name;
this.type = type;
}
}
class Dog extends Animal {
constructor(name) {
super(name, "dog");
}
}
const dog = new Dog("Pochi");
console.log(dog.name); // Pochi
console.log(dog.type); // dog
このサンプルでは、Animal
クラスにname
とtype
という2つのプロパティが定義されています。次に、Dog
クラスがAnimal
クラスを継承し、新たにname
プロパティを定義しています。
これにより、Dog
クラスのインスタンスからtype
プロパティを参照することもできます。
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。
この記事のまとめ
基底クラスのメソッドをオーバーライドで上書きする方法について解説しました。
- サブクラスからスーパークラスのメソッドを上書きするための機能を「オーバーライド」と呼びます。
super
キーワードを使用してサブクラスからスーパークラスのメソッドを呼び出す。- オーバーライドは、サブクラスに同じ名前のメソッドを定義することで実現する。
- プロパティは直接的にはオーバーライドすることはできません。代わりにサブクラスで新たなプロパティを定義することで同名のプロパティを上書きすることはできます。
オーバーライドの機能は、継承元のメソッドを上書きするために非常に役に立ちそうです。
オーバーライドはJavaScriptにおいて非常に重要な機能です。この機能を使うことで、継承元のメソッドを上書きすることができます。オーバーライドを使って、より複雑な処理を実現することも可能です。
コメント