2016-09-26 29 views
-4

我目前正在上java課,今天我的老師說了一些我腦子裏沒有接受的東西,可能是錯的。下面的代碼,java這個關鍵字裏面的構造函數

 class Ab{ 
     int x; 
     int b; 

      public Ab(int x, int b){ 
       this.x = x; 
       this.b = b; 
      } 


      public static void main(String[] args){ 
       Ab x = new Ab(4,5); // this is where my teacher confused me 

      } 
} 

我的老師說x Ab = new AB(4,5);會得到x對象調用構造函數構造函數是指它與this keyword過去了,什麼是匿名類,如new Ab(2,4);現在會有什麼this keyword是指?在我看來,this裏面的構造函數沒有鏈接引用變量,直到構造函數創建對象並將引用返回給變量。

+0

'this'指的是當前對象。 – Li357

+0

你的類定義了字段'int x',但是在你使用'this.a'的構造函數中。或者你的意思是int a和this.a或者int x和this.x。哪一個是對的? – walen

+0

爲什麼你的代碼格式化? – markspace

回答

1

匿名類如new Ab(2,4);

這不是一個匿名類。這是一個表達式,用於創建AB類型的新對象。該表達式的值是對該對象的引用。 AB構造函數中的this的值是對該對象的引用。下面的值x是對象的引用。它們都是對同一個對象的引用。

Ab x = new Ab(4,5); // this is where my teacher confused me 
在我的觀點

這裏面的構造與參考變量沒有聯繫,直到構造函數創建對象和引用返回變量。

構造函數中的this不需要引用另一個引用變量。它指向與構造函數返回時的x相同的對象。

引用不是對象本身。你可以認爲它可能是指向一個對象的多個指針之一。

+0

上面得到了正確的答案,現在我明白了,非常感謝你 –

0

你,因爲我們的變量的構造器的範圍名稱輸入thisab被隱藏的參數ab的名字後面。 this意味着該類的當前對象。

編輯: 對象是用new關鍵字創建的。 x變量只是對象的引用。在類方法中,我們可以使用this來引用當前對象,在其他地方我們可以引用它。所以當你的老師告訴this指的是x他的意思是指可用x訪問的對象。

+0

如果你能讀到最後一段我解釋過的每一件事情。 –

+0

在構造函數完成創建對象並返回對x變量的引用之前,構造函數中的「this關鍵字」是否與引用變量x有關係? –

+0

@RidaBatool我編輯了我的答案,向您解釋一切,如果它有幫助,請接受它作爲正確答案! –