前提・実現したいこと
この場合の実行結果は 1234 になります。
スーパークラスのコンストラクタはサブクラスより前に必ず呼ばれると学びました。
そのルールが適応された場合はコンストラクタはサブクラスの④からスタートではなく、
Bクラス先頭行にsuper();(もしくはsuper(String val);)のデフォルトコンストラクタが追加されて、①(または②)からスタート
実行結果は11234(または14234)となるように見えます。
サブクラスがsuper();として明示化している場合はルール条件から外れるのでしょうか。
該当のソースコード
java
1public class main{ 2 public static void main(String[] args){ 3 new B("4"); 4 } 5} 6 7class A{ 8 public A(){ //① 9 System.out.println("1"); 10 } 11 public A(String val){ //② 12 this(); 13 System.out.println(val); 14 } 15} 16 17class B extends A{ 18 public B(){ //③ 19 super("2"); 20 System.out.println("3"); 21 } 22 public B(String val){ //④ 23 this(); 24 System.out.println(val) 25 } 26}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/23 07:20