駆け出しのエンジニア日記

プログラミング言語勉強中の奮闘日記

extendsとsuper

extendsとsuper

これらはクラスの継承方法になります。

 

・extends

//Petは親クラス
class Pet {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name}がご飯を食べます`;
}
}
class Cat extends Pet {
meow() {
return 'にゃーーーーー!!!!!!1';
}
}
class Dog extends Pet {
bark() {
return 'わんわん!!!';
}
}

基本的な使い方は上記の通りです。Petが親クラスとなり、「extends」を用いて、Cat/DogがPetを継承していることを表します。

 

・super

継承元のプロパティやメソッドをオーバーライドする方法です。

そもそもオーバーライドというのは、簡単に言うと継承元のプロパティ・メソッドを上

書きするという意味です。

実際に書いてみます。

class Pet {
constructor(name, age) {
this.name = name;
this.age = age;
}
eat() {
return `${this.name}がご飯を食べます`;
}
}
class Cat extends Pet {
constructor(name, age, jumpHeight = 5) {
//superを使用することで、Petのconstructorを呼び出せる(親を指している)
super(name, age);
this.jumpHeight = jumpHeight;
}
meow() {
return 'にゃーーーーー!!!!!!1';
}
}

「super」を用いることで親クラスのロジックを再利用しつつ新しいロジックを付け加えることが可能になります。

つまり「super」を用いることで親を参照することができるということです。

継承元のコンストラクタを使いつつ新しいプロパティも定義したい場合にオーバーライ

ドが効果的です。