2016-07-23 70 views
2

爲什麼在任何類型的包裝器類(也是Number類的子類)中存在的toString()方法是靜態的,而將number作爲參數傳遞,但在對象上調用時不是這樣?
像Float類: -
當經過數浮點類toString方法

static String toString(float num) 

當對象調用: -

String toString() 

回答

2

它們是兩種不同的方法。

1.靜態方法

public static String toString(float f) 

是一個靜態方法,所以相關聯的類,而不是實例。 你不需要一個實例來調用它。 所以靜態方法是通過做例如Integer.toString(f)


2,實例方法

public String toString() 

是一個實例方法,因此被關聯到類的實例,而不是類本身靜態調用。 您必須有一個實例來調用它。


要回答你的問題,假設我們希望能夠有一個實例方法做靜態toString(myLong)方法做什麼。我們可以這樣做:myLong.toString(myLong)

爲了實現它,原來的靜態方法應該有兩種風格:一種帶有靜態修飾符,另一種不帶靜態修飾符(實例方法),而另一種帶有靜態修飾符實例方法將永遠不會使用其實例的狀態來執行toString()
那麼,爲什麼我們應該爲此創建一個實例方法?