2012-12-23 100 views
0

所以我有一個簡單的編程問題,我似乎無法找到答案。在瀏覽谷歌的一些代碼時,我注意到他們把'this'放在代碼中的很多方法之前。這樣做的目的是什麼?它沒有比不使用它有什麼好處嗎?在調用方法之前使用'this'。

一個例子:

this.doMethod(); 

相比:

doMethod(); 

我敢肯定它的一個簡單的答案,我只是喜歡能夠了解所有我讀的代碼。

+0

這是一個關於Java和OOP的問題,但不是針對Android的。 –

回答

5

不,它對於方法調用沒有任何區別。使用你發現更可讀的。

請注意,確實在區分實例變量和參數(或其他局部變量)之間進行區分時有所幫助。例如:

public void setFoo(int foo) { 
    this.foo = foo; 
} 

這是分配實例變量從參數的值 - 只是用foo = foo;將是一個空操作。

+0

我認爲這可能與構造函數有關,感謝大家爲我清理它! –

3

他們之間沒有任何區別。你總是調用一些參考方法。如果您不使用任何參考,this參考是隱含的。因此,doMethod()this.doMethod()相同。通過使用this,您只需將其明確。其中要求明確地使用this參考

一個地方是在要分配方法/構造參數的實例變量的值的地方,並且兩者都具有相同的名稱,如在下面的例子:

public Demo(int var) { // Constructor 
    this.var = var; 
} 

因此,在上面的例子中,this.var引用了實例變量,它不同於var,它指的是構造函數參數。

3

this代表當前類的對象實例。 在編程實踐中,大部分時間用來打破歧義。例如在示例中,有一個名爲name的類變量和名爲named的方法參數,所以這用於區分兩者。

 public void setName(String name){ 
     this.name= name; 
    } 

如果你沒有任何含糊之處則不會產生太大的區別,即setName("John");this.setName("John");是同樣的事情。但仍然有一個區別。 this.setName("John");遵循與您在對象上調用方法相同的模式(例如,emp.setName("A"););這裏this代表理智的類對象。

相關問題