CoffeeScript – 継承・オーバーライド・super()

クラスの継承とコンストラクタ

ポイント

親クラスを継承した子クラスのコンストラクタでは、基本的にsuper()で親クラスのコンストラクタを呼び出す。

たとえば次のように親クラスParentを子クラスChildが継承した場合、子クラスに親クラスのプロパティが引き継がれている。

ところが次のように子クラスでコンストラクタを定義した場合は、親クラスのプロパティが引き継がれない。

これは子クラスのコンストラクタが親クラスのコンストラクタをオーバーライドしてしまったためで、この状態では親クラスのコンストラクタが実行されない。

そこで、子クラスのコンストラクタからsupper()で親クラスのコンストラクタを呼び出すと、親クラスのコンストラクタも実行され、プロパティが引き継がれる。

コンストラクタが引数をとる場合も、super()で親クラスのコンストラクタに合わせた引数を指定すればよい。

メソッドのオーバーライドと継承

例えば次のコードでは、親クラスのmethod()を子クラスのmethod()がオーバーライドしている。

子クラスからオーバーライドした親クラスのメソッドを呼び出したい場合は、super()を使う。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です