しかし、記述ルールがあるので、どこに書いてもいいというわけではないです。
「this()」は必ず、コンストラクタ内の先頭に書く!これが記述ルール。
class Demo {
String s;
int i;
public Demo() {
this.s ="引数なし";
this.i = 1;
System.out.println("コンストラクタ" + i + "は" + s + "のコンストラクタ。");
}
public Demo(String s, int i) {
this();//引数なしのコンストラクタを呼び出すためのthisです。
this.s = s;
this.i = i;
System.out.println("コンストラクタ" + i + "は" + s + "のコンストラクタ。");
}
public static void main(String[] args) {
new Demo("引数あり", 2);
}
}
引数ありのコンストラクタの先頭に引数なしのthis()を書いて
引数なしのコンストラクタを呼び出しています。
=============== 実行結果 ===============
コンストラクタ1は引数なしのコンストラクタ。
コンストラクタ2は引数ありのコンストラクタ。
========================================
引数なしのコンストラクタから引数ありのコンストラクタを
呼び出す時には、this()に引数を持たせます。
class Demo {
String s;
int i;
public Demo() {
this("引数あり", 2);//引数ありのコンストラクタを呼び出すためのthisです。
this.s ="引数なし";
this.i = 1;
System.out.println("コンストラクタ" + i + "は" + s + "のコンストラクタ。");
}
public Demo(String s, int i) {
this.s = s;
this.i = i;
System.out.println("コンストラクタ" + i + "は" + s + "のコンストラクタ。");
}
public static void main(String[] args) {
new Demo();
}
}
=============== 実行結果 ===============
コンストラクタ2は引数ありのコンストラクタ。
コンストラクタ1は引数なしのコンストラクタ。
========================================
newしてインスタンスを生成し、コンストラクタを呼び出します。
呼び出したコンストラクタ内の先頭にthis()が記述されていたら
this()で呼び出しているコンストラクタ内の処理を先に行われ
その後、呼び出し元のコンストラクタの処理を行われます。
† 地球の末路!? †
【このカテゴリーの最新記事】
-
no image
-
no image