サブクラスのコンストラクタ

you12724 23views 更新:2015年12月21日

基本的なことですが忘れていたこともあったのでサブクラスのコンストラクタについて書きます。
サブクラスにてコンストラクタを呼ぶときに何も明示しなければ暗黙的にスーパークラスの引数なしのコンストラクタが呼ばれます。
しかし、スーパークラスに引数なしのコンストラクタがない場合、コンパイルエラーとなるので注意が必要です。

class A {
   A() {  
      ...
   }
}

class B {
   B(String a) {
      ...
   }
}

class C extends A {
   B() {
      // super(); が表記しなくても呼ばれる  
   }
}

class D extends B {
   D() {
      // クラス B には引数なしのコンストラクタがないためコンパイルエラーになってしまう
      // super("test"); のようにするか、クラス B に引数なしのコンストラクタを記述することで解決
   }
}

また、スーパークラスの変更したい値などはfinalやprivateなどが付いていると変更できません。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません