コンストラクタのthis();
の動きが理解できないので小さいプログラムでいろいろテストしてみたのですが、いまいち理解ができません。呼び出されるコンストラクタはインスタンスを生成するときの引数の種類と数に応じて自動で判断されているという部分とthis();
はコンストラクタに同じ記述をしないで済むというメリットの2点は理解できます。そこで質問です。結果は下です。
- 例えば
A a = new A(100);
でインスタンスを生成したときのプログラムは具体的にどう動いているのでしょうか?結果を見ても考えていた動きと違うので混乱しています。 - コンストラクタが複数ある場合
this();
はどういう基準で別のコンストラクタを呼び出しているのでしょうか?他2つのどちらが呼ばれているのかわかりませんでした。 - みなさんはどういう場面で
this();
を使おうと考えるのでしょうか?
数時間this();
の動きに頭を悩ませています。アドバイスをいただけるとうれしいです。
【追記】
koko_uさんからの追記依頼がありましたので追記いたします。
元々はインスタンスを生成するときに引数を100と指定したのでpublic A(int i)
が呼び出されてthis("s");
がどういう動きをするのだろうかと勉強のために作ったプログラムでした。
100 s 7
おそらく上記のような表示だろうと考えていたのですが100の表示順どころか3つ目にもsが表示されてしまったところが「考えていた動きと違う」という点です。
Java
1public class A { 2 private String s; 3 private int i; 4 5 public A(String s, int i) { 6 this.s = s; 7 this.i = i; 8 System.out.println(s); 9 System.out.println(i); 10 } 11 12 public A(String s) { 13 this(s, 7); 14 System.out.println(s); 15 } 16 17 public A(int i) { 18 this("s"); 19 System.out.println(i); 20 } 21} 22 23public class Main { 24 public static void main(String[] args) { 25 A a = new A(100); 26 } 27}
Java
1s 27 3s 4100
回答5件
あなたの回答
tips
プレビュー