上次我們說到了this關鍵字現在我們繼續(xù)說我們的this的用法
構造函數調用構造函數
如果為一個類謝了很多個構造函數醇坝,我們經常需要在一個構造函數中調用另一個構造函數扶歪,那么我們?yōu)椴蛔尨a出現冗余杰捂,我們可以通過this這個關鍵字來實現结洼。
this關鍵字的意識就是說“當前對象”的意思枷畏。在一個構造函數中敷硅,為其賦予一個自變量的列表巩步,那么this關鍵字會具有不同的含義:它會對與那個自變量列表相符的構建器進行明確的調用
public class Flower {
private int petalCount = 0;
private String s = new String();
Flower(int petals){
petalCount = petals;
System.out.println("構造函數 w/ int參數旁赊,petalCount =" + petalCount);
}
Flower(String ss){
System.out.println("構造函數 w/ String參數,s="+ss);
s = ss;
}
Flower(String s,int petals){
this(petals);//this(s);不能調用兩次
this.s = s; //this的另一個用法
System.out.println("String&int args");
}
Flower(){
this("hi",47);
System.out.println("默認的構造函數(沒有參數)");
}
void print(){ //不是在構造函數中
System.out.println("petalCount="+petalCount+"\ts="+s);
}
public static void main(String[] args){
Flower x =new Flower();
x.print();
}
}
在Flower(String s椅野,int petals)這個構造函數中像我們說明了一個問題this關鍵字是可以調用構造函數但是不可調用兩次终畅,還有就是夠贊函數調用的必須是我們我們第一次執(zhí)行 的對象籍胯,不然編譯器會報錯。
同時這個例子也向我們展示了this關鍵字的另一個用途离福,我們定義了很多s這個變量杖狼,這么多的變量名相同我們在調用的時候很容易混淆,而我們可以通過this.s來引用數據妖爷,這樣我們就可以清晰的使用變量了
而最后我們在print()中發(fā)現編譯器不讓我們再構造函數之外的任意一方法內部調用一個構造函數蝶涩。