スポンサーリンク

【JavaScript】class構文の継承方法を解説【super】

javascript
「javaScriptのclass構文にある『継承』ってよくわからない!どうやって使えばいいの?

という方向けのご紹介です。

執筆者

独学でキルミーベイベーのゲームを作っている男
・javascriptが大好きな男

『クラス構文』の活用方法

クラス構文は、変数や定数をよりシンプルに活用するための機能です。

その中に「継承」という機能があります。
少しだけコツを覚えるだけでコードをより簡単にまとめることができる便利な機能です。

ちなみに、classの基本的な使い方はこちらでご紹介しておりますので、ご活用ください。class構文の使い方が驚くほどわかる!【オブジェクト指向】

継承 とは

継承を一言で表すと

好きなオブジェクトが持つ変数や関数を別オブジェクトで使えるようにする

となります。

継承、の言葉通りデーターを引き継ぐことです。
ゲームで言えば強いキャラのスキルを他キャラにピンポイントで引き継がせる、とイメージいただくとよいと思います。

継承には主に「extends」「super」の2つの方法があります。

extendsだけでも即効性があり、シンプルに使えやすいですが、
今回はより応用的なsuperについて解説します。

extendsについてはこちらで解説していますので、ご活用ください。
【JavaScript】class構文の継承方法を解説【extends】

super の使い方

super」について説明します。

サンプルコード見てましょう。
初めは「羽生善治」、3秒経過で「藤井聡太」が表示されますね。

superは継承元のコンストラクタ、メソッドを引き継ぐことができます。
こちらが引継ぎ元のhabu(羽生)クラスです。

class habu{
 constructor(myname){
  this.name = myname;
 }
 returnName(myname){
  this.name = myname;
  return this.name;
 }
}

コンストラクタ:this.name/メソッド:returnName が設定されています。
これをhuzii(藤井)クラスでも使えるように設定します。}

順番に見ていきましょう。

super でコンストラクタを継承する

該当する部分がこちら

class huzii extends habu{
 constructor(myname){
  super(myname)
 
  Change.textContent = this.name;
  Message.textContent = this.name;
}

super(myname)」と記述しているのが分かると思います。
これだけで親クラス「name」プロパティに「myname」を定義できます。

定義、つまり引き継ぐことができますので…
わざわざ新しく[this.name = myn…]と記述する必要がなくなるのです!

これで親クラスのプロパティを自由に使うことができます。

super でメソッドを継承する

メソッドも考え方は全く同じです。

該当部分はこちら

showName(){
 Change.textContent = '『私の名前は' + super.returnName("藤井聡太") + 'です』';
 Message.textContent = '『私の名前は' + super.returnName("藤井聡太") + 'です』';
}
superの後に引き継ぎたいメソッド名を記載するだけでOKです。

抜粋すると「super.returnName(“藤井聡太”)」で継承しているわけですね。
これを日本語に直すと

extendsの後に記述した親クラスから引き継ぎます。returnNameというメソッド名で引数は”藤井聡太”です。』

となります。

『一回設定したメソッドを別のクラスでも使いたいな…』

という時に是非使ってみてください。

まとめ

最後に、クラス構文のsuperについてまとめます。

①extendsと一緒に使用する
②「super(コンストラクタ)」「super.メソッド名」で親クラスの情報を引き継ぐことができる

以上となります。

クラス構文はjavaScriptを使用する上で大変便利な機能です。
最初は少し難しいですが、当記事が理解の助けになれば幸いです。

また、当サイトでは初学者向けにゲームの作り方を紹介しております。

【JavaScript】リバーシ(オセロ)の作り方を初学者向けに1行づつ解説!①【ゲーム】

ゲームを作るのはとても勉強になりますし、モチベーション維持にもつながります。
興味があればご活用ください。