this關鍵字

發表于:2007-07-14來源:作者:點擊數: 標簽:
有時一個方法需要引用調用它的對象。為此, Java 定義了this 這個關鍵字。this 可以在引用當前對象的所有方法內使用。也就是,this 總是調用該方法對象的一個引用。你可以在當前類的類型所允許對象的任何地方將this 作為一個引用。 為了更好理解this 引用什

有時一個方法需要引用調用它的對象。為此,Java 定義了this 這個關鍵字。this 可以在引用當前對象的所有方法內使用。也就是,this 總是調用該方法對象的一個引用。你可以在當前類的類型所允許對象的任何地方將this 作為一個引用。

為了更好理解this 引用什么,考慮下面版本的Box():

// A redundant use of this.

Box(double w,double h,double d) {

this.width = w;

this.height = h;

this.depth = d;

}

本例中的box( ) 和它的更早版本完成同樣的操作。使用this 是冗余的,但是完全正確。在Box( ) 內,this 總是引用調用的對象。雖然在本例中它是冗余的,但在另外的環境中,它是有用的,其中的一種用法在下一小節解釋。

6.6.1 隱藏的實例變量
你知道,在同一個范圍或一個封裝范圍內,定義二個重名的局部變量在Java 中是不合法的。有趣的是,局部變量,包括傳遞到方法的正式的自變量,可以與類的實例變量的名字重疊。在這種情況下,局部變量名就隱藏(hide )了實例變量名。這就是在Box 類中,width 、height 、depth 沒有作為Box() 構造函數自變量名字的原因。如果它們是,那么width 將正式的引用自變量,而隱蔽實例變量width 。由于通常簡單地使用不同的名字更容易,對這種狀況還有其他的解決辦法。因為this 可以使你直接引用對象,你能用它來解決可能在實例變量和局部變量之間發生的任何同名的沖突。例如,下面的例子是另外一個版本的Box ()程序,它用width 、height 、depth 作為自變量的名字,然后使用this 關鍵字來存取同名的實例變量:

// Use this to resolve name-space collisions.

Box(double width,double height,double depth) {

this.width = width;

this.height = height;

this.depth = depth; }

注意,在這樣的環境下使用this 有時會引起混淆。有些程序員比較小心,不使用和局部變量、正式的自變量同名的隱藏的實例變量。當然,另外的程序員則相反,相信用this 來“揭開”與局部變量、自變量同名的實例變量是一個好習慣。這取決于你的愛好。

盡管在上面的例子中,this 沒有有什么意義,但它在某種狀況下是很有用的。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97