JAVA程序設計--對象和類(九)

this引用

關鍵字this引用對象自身

可以在構造方法內部調用同一個類的其他構造方法;

使用this也可以引用隱藏數據域。

如:

public class Circle{

private double radius;

public Circle(double radius){//有參構造方法

this.radius = radius;//顯示使用this來引用被創建對象的數據域radius.

}

public Circle(){//無參構造方法

this(1.0); //使用this調用另一個有參構造方法,參數類型是double型的。
//使用方法是this(參數列表);在構造方法中,this(參數列表)語句要寫在其他語句出現之前。
}

public double getArea(){

return this.radius*this.radius*Math.PI;//每個實例變量都屬於一個this表示的實例,通常在不引起歧義的情況下,這個this是被忽略的。

}

}




在數據域的set方法裏,經常將數據域名用作參數名。在這種情況下,這個數據域在set方法中被隱藏。爲了給它設置新值,需要在方法中引用隱藏的數據域名。

隱藏的靜態變量可以簡單通過“類名.靜態變量”引用(結果是這個類的所有對象共享這個參數的值)
隱藏的實例變量需要使用this來引用(結果是參數的調用對象的數據域)

public class F{
private int i = 5;
private static double k = 0;
public void setI(int i){
this.i = i;// //指向調用setI方法的那個對象,把傳入的int型的參數i的值賦給那個對象的數據域i。
}
public static void setK(double k){
F.k = k;////將double類型的參數k的值賦值給這個類的靜態數據域k,屬性k是被類的所有對象所共享的。
}

}



總結:

this不能用在static方法中!

所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!


什麼情況下需要用到this:

第一、通過this調用另一個構造方法,用法是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這麼用

第二、函數參數或者函數中的局部變量和成員變量同名的情況下,成員變量被屏蔽,此時要訪問成員變量則需要用“this.成員變量名”的方式來引用成員變量。當然,在沒有同名的情況下,可以直接用成員變量的名字,而不用this,用了也不爲錯。

第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。


其實這些用法總結都是從對“this是指向對象本身的一個指針”這句話的更深入的理解而來的。
發佈了44 篇原創文章 · 獲贊 18 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章