同じ形をまとめて作る(クラス)

INPUT · スライド

子だけの機能を足す

01 / 04

全部が共通ではない

のりものはどれも走る。でも荷物を積めるのはトラックだけだよね。

共通じゃない動きを親に書いてしまうと、自転車まで「積む」ことになってしまう。そういうものは子クラスに書こう。

02 / 04

子クラスの中に書くだけ

書き方は今までのメソッドと同じ。子クラスの { } の中に書けばいいよ。

子のインスタンスは、親から引き継いだメソッドと、自分だけのメソッドの両方を持つことになる。

class Vehicle {  constructor(name) {    this.name = name;  }  run() {    console.log(`${this.name}がはしる`);  }}class Truck extends Vehicle {  load() {    console.log(`${this.name}につみこむ`);  }}const t = new Truck("おおきいトラック");t.run();t.load();

実行結果

おおきいトラックがはしる
おおきいトラックにつみこむ

03 / 04

子のメソッドでも this は使える

子クラスに書いたメソッドからでも、親が用意したプロパティthis で読めるよ。上の loadthis.name を使えているのがその証拠だね。

引き継いだ時点で、それは自分のものになっていると考えていいよ。

04 / 04

引き継ぎは一方通行

気をつけたいのは逆向き。Vehicle から作ったインスタンスに load() は無いよ。子で足したものは親には届かない

迷ったときの目安はこれ。

  • どの子にも当てはまる → 親に書く
  • その子だけのもの → 子に書く

ここから書いてみよう。