今日考點:構造器/設值方法中參數名與成員變量名相同時,this 的作用。
package Nov2016;
public class Ques1104 {
private String num;
public void setNum(String num) {
num = num; // 1
this.num = num; // 2
}
public String getNum() { return num; }
}
註釋 1 和 2 兩處的作用是否一樣?
答案:作用完全不同。
num = num;:參數 num 遮蔽了成員變量 num,這是「自我賦值」,成員變量值不變。this.num = num;:this.num 顯式引用當前對象的成員變量,正確將參數值賦給成員變量。this 代表當前對象引用,this.field 可消除歧義,訪問被遮蔽的成員。this.,否則屬性賦值失效。this.。num / num_),或統一使用 this.field = param 風格。這道題看似簡單,卻是新手極易踩坑、老手面試愛問的基礎考點,理解 this 機制對寫出正確 Java 代碼至關重要。