在建構元也可以運用 this 達到建構元間的呼叫。
以下範例為建構元利用this的技術來相互呼叫:
class CCircle{private String color;private double pi=3.14;private double radius;public CCircle() //這是一個沒有引數建構元{this("Green",1.0); //這行將會呼叫有兩個引數的建構元System.out.println("CCircle() 呼叫");}public CCircle(String str, double r) //這是一個有兩個引數的建構元{System.out.println("CCircle(String,double) 呼叫");color=str;radius=r;}public void show(){System.out.println("color="+color+", Radius="+radius);System.out.println("area="+pi*radius*radius);}}public class class_constructor_3{public static void main(String args[]){CCircle cir1=new CCircle();cir1.show();}}
以下針對這程式解說一下:
主程式部分,直接呼叫沒有引數的建構元
CCircle cir1=new CCircle();
讓我們看到沒有引數的建構元
public CCircle() //這是一個沒有引數建構元{this("Green",1.0); //這行將會呼叫有兩個引數的建構元System.out.println("CCircle() 呼叫");}
讓我們再看到有兩個引數的建構元
public CCircle(String str, double r) //這是一個有兩個引數的建構元{System.out.println("CCircle(String,double) 呼叫");color=str;radius=r;}
剛剛在沒有引數的建構元當中:
this("Green",1.0);
把color 設為Green,radius設為1.0; 因為要呼叫下方 擁有兩個引數的建構元, 因此以this() 來呼叫。
this ( ) 要寫在建構元的敘述第一行;以下情況是不行的:
public CCircle() //這是一個沒有引數建構元{System.out.println("CCircle() 呼叫");this("Green",1.0); //這行寫法是錯誤的}
正確寫法為:
public CCircle() //這是一個沒有引數建構元{this("Green",1.0); //這行將會呼叫有兩個引數的建構元System.out.println("CCircle() 呼叫");}