
“嗨,阿米戈!”
“你好!”
“今天我們要研究的是Object類,
你已經接觸過了,你知道Object是所有類的基類,它幾乎沒有數據,但是它有幾個方法。”
“為什麼它需要方法?真的有人創建 Object 類的實例嗎?”
“這樣看:Object 類中的方法在所有類中都是通用的。換句話說,Java 的創建者確定了幾種在他們看來每個類都應該擁有的方法,並將它們添加到 Object 類中。”
“當與多態性(在派生類中覆蓋 Object 類的方法的能力)結合時,這將成為一個非常強大的工具。”
“讓我們看看這些方法是什麼:”
方法 | 描述 |
---|---|
|
返回對象的字符串表示形式。 |
|
一對用於比較對象的方法。 |
|
返回描述當前類的特殊對象。 |
|
用於控制從不同線程訪問對象的方法。用於線程同步。 |
|
此方法允許您釋放本機非 Java 資源:關閉文件、流等。 |
|
此方法允許您克隆對象:創建對象的副本。 |
“這些方法可以分為6組,其中一些你已經熟悉了,剩下的我們會在後續的課程中熟悉。”
“出於某種原因,我在這裡看不到任何有用的東西。”
“朋友!如果這些方法不重要,他們就不會將它們添加到每個對像中!所以,我建議你更仔細地了解這些是什麼以及為什麼需要它們。如果它們對你來說不重要,那麼你要么沒有理解某事,要么沒有正確理解某事。”
“好的,我會仔細聽的。”
“讓我們從 toString() 方法開始。
“這個方法可以讓你得到任何對象的文本描述。它在 Object 類中的實現非常簡單:”
return getClass().getName() + "@" + Integer.toHexString(hashCode());
“getClass() 和 hashCode() 也是 Object 類的方法。
調用此方法通常會產生如下結果:”
java.lang.Object@12F456
“這樣的描述有什麼用呢?”
“這個描述讓你知道調用該方法的對象的類。你還可以區分對象;不同的對像在@符號後會有不同的數字。”
“但這個方法的真正價值在於其他地方。這個方法可以在任何類中被覆蓋,以返回更詳細或更合適的對象描述。”
“但還有更多。因為您可以獲得每個對象的文本表示,Java 使您可以實現對向對象‘添加’字符串的支持。檢查一下
:”
代碼 | 到底發生了什麼 |
---|---|
|
|
|
|
|
|
“是的,我經常使用這個。特別是當我在寫程序或尋找錯誤時。這是一個有用的操作。”
GO TO FULL VERSION