#質問
フィールドの代入と、コンストラクタとインスタンス化の際の引数について質問します。
抽象化して質問するのが難しいので、いきなり例示します。
説明が下手ですみません。
下の例で、予想道理に出力が出ない理由が知りたいです。
new B(引数)の引数ではなく、super(引数)の引数が反映される理由はどのように考えればよいでしょうか。
クラスBに引数を反映させるとき、new で引数を与えることとsuperで引数を与えることの違いがわかりません。
どなたかご存知の方がいらっしゃいましたら教えていただきたいです。
java
1public class test { 2 public static void main(String[] args) { 3 new A().aMethod(); 4 } 5} 6 7class A extends B { 8 B b; 9 10 A() {//コンストラクタ 11 super(4); 12 b = new B(3); 13 } 14 15 void aMethod() { 16 System.out.println(b.bMethod()); 17 //4が出力される 18 //コンストラクタでnew B(3);としたので、3が出力されると予想したのに 19 } 20} 21 22class B { 23 private static int bField; 24 25 B(int bb) { 26 this.bField = bb; 27 } 28 29 //コンストラクタの外でフィールド変数を代入 30 private int bField2 = bField; 31 32 int bMethod() { 33 return bField2; 34 } 35} 36
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/10 07:46
2016/06/10 07:53 編集