コツコツ学習ブログ

プログラマのweb上のメモ的なもの

継承とコンストラクタ

継承されたクラスのコンストラクタの動作

  • まず、継承されたクラスのインスタンスは内部に親クラスのインスタンスを持つ多重構造である。
  • 全てのコンストラクタは、先頭で「親インスタンス部分のコンストラクタ」 を呼び出す必要がある。 -> super() で呼び出しを行う もしコンストラクタの先頭にsuper()が無ければ暗黙的に(自動的に) 実行時に追加される。

その際、親クラスに引数なしのコンストラクタが存在しない場合はコンパイルエラーとなる。 解決策としては引数なしのコンストラクタを親クラスで定義しておくか、 super("呼び出します"); のように引数付きで呼び出す。

super()に与える引数の型と数によって、「親インスタンス部分が初期化される時に利用されるコンストラクタ」を明示的に指定できる