2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】クラスの継承

Last updated at Posted at 2020-05-11

#【JavaScript】クラスの継承(子クラスの作り方)

親クラスをベースにした子クラスを作ることで、親クラスが持つ処理を子クラスに継承することができる。
継承することで、親クラスと子クラスの共通処理をsuperで短くまとめることができる。

##子クラスの作り方

クラスを作る際に次のようにextendsで記述する。

class 子クラス名 extends 親クラス

プロパティやメソッドの継承にはsuper();を追加する

##例文

テキストを表示するShowMessage クラスを拡張するため、ShowMessageExtends 子クラスを作る場合

親クラスの内容

    class ShowMessage { //親クラス
        constructor(text) {
        this.text = text;
        }

        show() {
        console.log(`${this.text}`);
        }
    }

子クラスの内容

    class ShowMessageExtends extends ShowMessage { //子クラス: class 子クラス名 extends 親クラス
        constructor(text, extendsText) {
        super(text);//super()で親クラスのプロパティを継承
        //this.text = text; プロパティが継承
        this.extendsText = extendsText; //子クラスShowMessageExtendsの独自処理(プロパティ)だけを書けばよい
        }

        show() {
        super.show();//super()で親クラスのメソッドを継承
        //console.log(`${this.text}`);メソッドが継承
        console.log(`and more ... ${this.extendsText}`);//子クラスShowMessageExtendsの独自処理(メソッド)だけを書けばよい
        }
    }

テキストの設定、出力処理

    const showMessages = [
        new ShowMessage('JavaScriptの勉強中'),
        new ShowMessage('Qiitaに投稿'),
        new ShowMessageExtends('Extend comments','written by kuro.'),//子クラスの処理
    ];

    showMessages[0].show();
    showMessages[1].show();
    showMessages[2].show();

実行結果

    JavaScriptの勉強中
    Qiitaに投稿
    Extend comments
    and more ... written by kuro.

実際に書いて、デベロッパーツールでの出力を確認しておりますが、誤りがありましたら、ご指摘頂けますと幸いです。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?