【Java学習】06 thisとsuper [Java SE 11 Silver 紫本]

サブクラス実行の際はsuperクラスのコンストラクタはかならず実行されますが、特に明示しない限り引数なしのコンストラクタが呼び出されます。

以下のコードは動作確認のためだけに作成されたものです。意味は分かりますが実用に寄与しない内容でもやもやします。

class SuperA {
  public SuperA() { System.out.println("SuperA()"); }
  public SuperA(int a) { System.out.println("SuperA(int a)"); }
}
class SubA extends SuperA {
  public SubA() { System.out.println("SubA()"); }
  public SubA(int a) { 
    super(a); // 引数付きコンストラクタを呼び出すのに必要な記述
    System.out.println("SubA(int a)"); }
}
public class Main {
  public static void main(String[] args) {
    SubA obj1 = new SubA();
    SubA obj2 = new SubA(10);
  }
}
--------------------------------------------------

出力
--------------------------------------------------
SuperA()
SubA()
SuperA(int a)
SubA(int a)