2013-08-25 77 views
1

大家你好,這是使我迷惑......Arrays.toString()重寫Object的toString()方法嗎?

所有toString()方法Arrays類是靜態的,那麼,這是否真的覆蓋Object的toString()方法?有人告訴我:

不,它不重寫Object的toString方法。它包含來自Object的繼承的toString,由於無法實例化類,所以它從不使用。在Arrays類中看到的是toString的重載版本。

所以我去了source code但沒有看到這樣的事情。我錯過了一些事情嗎?不好意思問這樣一個noob問題。

+1

你期望看到什麼,沒有看到? –

+0

我希望能從Object類中看到繼承的'toString()'方法,但尚未使用(意味着內部沒有任何內容)。 –

+0

@tintinmj。當我們說一個類從它的超類繼承了這個方法時,這與重新定義這個方法真的不同,在這種情況下,它將被稱爲覆蓋。你應該搜索術語 - 繼承,並閱讀它。 –

回答

7

Arrays類是一個實用類。因爲它不可實例化,所以Object的toString方法是無關緊要的。

靜態toString方法你看到的是完全無關的標準toString方法,應該清楚從their description in the javadoc。還要注意複數形式:這個名稱有多個方法,它們都沒有與對象相同的簽名:它們都有一些參數。

+0

所以'Arrays'類的'toString'方法是一個獨立的方法,它和'Object'的'toString'無關。 –

+0

只有意圖的模糊相似性:製作一個字符串。 –

+0

因爲它是對象的字符串表示,對嗎? –

0

ObjecttoString()方法沒有參數。 Arrays中的所有toString方法都有一種或另一種類型的參數,因此它們不會覆蓋從Object繼承的toString()方法。它們是與Object.toString()沒有任何關係的獨特方法(就編譯器而言)。但是,要使用繼承的toString()實例方法,您需要一個Arrays實例來調用繼承的方法,並且由於您不能擁有其中的一個方法,所以這沒有任何意義。

相關問題