2014-07-09 63 views
0

當'this'運算符用於引用當前對象中的變量是包含在構造函數中嗎?例如...使用此運算符在構造函數中獲取變量?

public class Mechanics { 

    public Mechanics() { 
     int x = 1; 

    } 

    public int returnX(){ 
    return this.x; 
{ 

} 

由於構造函數時創建對象將在「這個」運營商在構造或僅一個變量,它是外面返回x被稱爲?

謝謝

+2

您應該閱讀變量範圍。 –

+4

'x'的範圍僅限於構造函數。所以不,你將無法引用它。 –

+0

此外,變量和數據成員是完全不同的東西。 –

回答

3

您的代碼無效並且無法編譯。 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; 
    } 
} 

這是一樣好,因爲你期望的行爲,任何局部變量聲明內的任何類(包括構造函數)的成員方法將變成擁有類的字段。這是無政府狀態的祕訣。

0

變量x的範圍僅限於構造函數。

如果你想在returnX訪問x你可以這樣做:

public class Mechanics { 

    private int x; 

    public Mechanics() { 
     this.x =1; 

    } 

    public int returnX(){ 
    return this.x; 
} 

} 
0

X是內部構造局部變量,經過構造完成它的工作,它不存在。你的代碼不會編譯。

「這個」只是對這個類的對象的引用。是否有可能獲得其他方法內的一些局部變量的值?不,不管你如何嘗試。 您需要class字段,這對所有方法都是可見的。

相關問題