當'this'運算符用於引用當前對象中的變量是包含在構造函數中嗎?例如...使用此運算符在構造函數中獲取變量?
public class Mechanics {
public Mechanics() {
int x = 1;
}
public int returnX(){
return this.x;
{
}
由於構造函數時創建對象將在「這個」運營商在構造或僅一個變量,它是外面返回x被稱爲?
謝謝
當'this'運算符用於引用當前對象中的變量是包含在構造函數中嗎?例如...使用此運算符在構造函數中獲取變量?
public class Mechanics {
public Mechanics() {
int x = 1;
}
public int returnX(){
return this.x;
{
}
由於構造函數時創建對象將在「這個」運營商在構造或僅一個變量,它是外面返回x被稱爲?
謝謝
您的代碼無效並且無法編譯。 x
在構造函數中定義的是,局部對構造函數只有。它不是Mechanics
類的字段。爲了能夠使用x
別的地方,你需要將其申報爲類的字段:
public class Mechanics {
private int x;
public Mechanics() {
this.x = 1; //initialize x in the constructor
}
public int returnX() {
return this.x;
}
}
這是一樣好,因爲你期望的行爲,任何局部變量聲明內的任何類(包括構造函數)的成員方法將變成擁有類的字段。這是無政府狀態的祕訣。
變量x
的範圍僅限於構造函數。
如果你想在returnX
訪問x
你可以這樣做:
public class Mechanics {
private int x;
public Mechanics() {
this.x =1;
}
public int returnX(){
return this.x;
}
}
X是內部構造局部變量,經過構造完成它的工作,它不存在。你的代碼不會編譯。
「這個」只是對這個類的對象的引用。是否有可能獲得其他方法內的一些局部變量的值?不,不管你如何嘗試。 您需要class字段,這對所有方法都是可見的。
您應該閱讀變量範圍。 –
'x'的範圍僅限於構造函數。所以不,你將無法引用它。 –
此外,變量和數據成員是完全不同的東西。 –