あっくんブログ Written by Akihiro Tsuji

JavaScriptの継承

JavaScript プログラミング

こんにちは、あっくんです。最近、勉強する時間が短くなりました。ぬるま湯に、身を置いたからだと思います。ぬるま湯とはアニメみたり、ゆっくりしたり、ダラダラするための理由を探していく循環です。アニメは「転生したら、スライムだった件」をいま見ています。アニメの中毒性はすごいですね。体調もここ1ヶ月ほどよくありませんが、生活習慣と、生活リズムの修正からやってみます。とりあえず、早起きに挑戦します。
振り返って悔やむことだらけの人生ですが、これからの未来をどうするか?改めて考えて、自分の考えが正しいのか、自分の行動で実験して見るところから出直しです。

今回はJavaScriptの継承をやっていきましょー!

親クラスを継承して、子クラスを作ります。class 子クラス名 extends 親クラス名、と書くことで継承できます。子クラスは「{}」内に何も書かなければ、親クラスと同一のプロパティとメソッドを持ちます。

構文

class 親クラス名{ } class 小クラス名extends 親クラス名{ }
Code language: JavaScript (javascript)

コンストラクターの機能を書き換えるときは、コンストラクターのなかで、まずsuper()を実行します。superは親クラスをあらわします。引数があるなら、super(引数)を実行します。そのあとに、子クラス独自の初期化をします。

構文

class 親クラス名{ constructor(引数{ 初期化をおこなう this.プロパティ名パティ名= 代入する値; } ] class 子クラス名extends 親クラス名{ constructor(引数{ super(引数; 初期化をおこなう this.プロパティ名パティ名= 代入する値; } }
Code language: JavaScript (javascript)

子クラスで、メソッドを変更したい時は、親クラスのメソッドと同じ名前のメソッドを書きます。子クラスの中で、super.メソッド名()を実行すると、親クラスのメソッドを実行できます。

構文

class 親クラス名{ constructor(引数{ } メソッドA(引数{ 親クラスのメソッドAの処理 } } class 子クラス名extends 親クラス名{ constructor(引数{ } メソッドA(引数{ super.メソッドA() 小クラスのメソッドA() } }
Code language: JavaScript (javascript)

小クラスで新しいメソッドを増やす事ができます。

構文

class 親クラス名{ constructor(引数{ } メソッドA(引数{ } } class 小クラス名extends 親クラス名{ constructor(引数{ } メソッドA(引数{ } メソッドB(引数{ 小クラスで増やしたメソッド } }
Code language: JavaScript (javascript)

例、継承を利用したプログラムです。

Image from Gyazo
<html> <script> // 親クラスを作成 class Menu { // コンストラクター constructor(name, price) { // 初期化をおこなう this.name = name; this.price = price; } // インスタンスメソッド getInf() { // 文字列を作成して戻す const t = `${this.name} : ${this.price}円`; return t; } } // 子クラスを作成 class DrinkMenu extends Menu { // コンストラクター constructor(name, price, size) { super(name, price); // 初期化をおこなう サイズが有効なら代入 this.size = null; if (size === "S") { this.size = size; } if (size === "M") { this.size = size; } if (size === "L") { this.size = size; } } // インスタンスメソッド getInf() { // 親クラスのメソッドを使う const superT = super.getInf(); // 文字列を作成して戻す const t = `${superT} : ${this.size}`; return t; } // 追加したインスタンスメソッド getSizeNum() { // サイズの値によって、量(ml)の数値を返す if (this.size === "S") { return 200; } if (this.size === "M") { return 200; } if (this.size === "L") { return 200; } return 0; } } // クラスをつかってオブジェクトを作る const cake = new Menu("チョコレート", 460); const iceTea = new DrinkMenu("アイスティー", 400, "S"); // 親クラスのオブジェクトメソッドを使う console.log(cake.getInf()); // 子クラスのオブジェクトでメソッドを使う console.log(iceTea.getInf()); console.log(`量は${iceTea.getSizeNum()}ml`); </script> </html>
Code language: HTML, XML (xml)

読んでいただいてありがとうございます。

JavaScript完全入門で勉強させていただいています。