2015-06-29 46 views
0

很多人都說java中的構造函數是Non-static ..! 要初始化對象,我們需要構造函數。因此,我們可以使用沒有對象的構造函數,那麼構造函數必須是靜態的。在Java中,構造函數是非靜態的嗎?

+1

很難理解你想說什麼/問。請再試一次 – musefan

+0

我認爲這是一個很好的哲學問題:)構造函數是一種奇怪的方法 - 它同時屬於類和新實例...所以我理解OP的觀點。 –

+0

我認爲這是一個問題和自我回答的嘗試,但目前尚不清楚。如果是這樣,請編輯您的問題,以便它只包含問題部分(儘管您可能想添加一些關於導致混淆的細節),然後在答案區域添加答案。 – BSMP

回答

4

構造函數有一個實例(this可用)。因此,根據定義,它不是靜態的。

JRE在創建實例後運行構造函數。

0

嗯,這不是關於「很多人的想法」,而是關於定義。作爲Java Language Specification說:

一種實例方法總是相對於調用的對象,成爲當前對象到其中的關鍵字thissuper方法體的執行期間參考。

未聲明static的方法被稱爲實例方法,並且有時被稱爲非靜態方法。

正如你所thissuper構造的環境下定義,你必須考慮構造爲非靜態方法,但是我理解其背後的職務的想法,new負有一定靜電功能:

  • 你之前調用new你有準備的情況下
  • new不虛
0

Java中的構造函數構造不用於對象,而是用於初始化對象。構造函數是在實例化對象之後由JVM運行的第一個方法。

0

在Java構造函數中不能是靜態的或同步的。一個對象只能由一個線程構造(創建+初始化),而構造器則在已創建的實例上運行 - 意味着在非靜態的上下文中。