Java在java.lang包中有一個Object類。所有Java類都直接或間接擴展Object類。所有Java類都是Object類的子類,Object類是所有類的超類。Object類本身沒有超類。Object類的引用變數可以保存任何類的對象的引用。
以下代碼聲明對象類型的引用變數obj:
Object obj;
Object類有九個方法,可以在Java中的所有類中使用。有關 Object類的所有方法及描述 -
| 方法名稱 | 描述 |
|---|---|
| public String toString() | 它已經在Object類中實現了,也可以自定義它。它返回對象的字串表示形式。通常,它用於調試目的。 |
| public boolean equals(Object obj) | 它已經在Object類中實現,可以自定義它,它用於比較兩個對象的相等性。 |
| public int hashCode() | 它已經在Object類中實現,可以自定義它。它返回對象的哈希碼(整數)值。 |
| protected Object clone() throws CloneNotSupportedException | 它不在Object類中實現,可以通過覆蓋克隆方法來自定義它。它用於創建對象的副本。 |
| protected void finalize() throws Throwable | 它不是在Object類中實現的,可以自定義它。它在對象被銷毀之前被垃圾收集器調用。 |
| public final Class getClass() | 它在Object類中實現,不能自定義它。它返回對對象的Class對象的引用。 |
| public final void notify() | 它在Object類中實現,不能自定義它。此方法通知對象的等待佇列中的一個線程。 |
| public final void notifyAll() | 它在Object類中實現,不能自定義它。此方法通知對象的等待佇列中的所有線程。 |
| public final void wait() throws InterruptedException ; public final void wait(long timeout) throws InterruptedException ; public final void wait (long timeout, int nanos) throws InterruptedException | 它在Object類中實現,不能自定義它。使對象的等待佇列中的線程等待不管是否超時。 |
示例
以下代碼顯示如何重新實現Object類的toString()方法。
public class Test {
public String toString() {
return "Here is a string";
}
}
Object類是什麼?
Java中的每個對象都屬於一個類。Object類的getClass()方法返回Class對象的引用。
以下代碼顯示了如何獲取Cat對象的Class對象的引用:
Cat c = new Cat();
Class catClass = c.getClass();
Class類是通用的,其形式類型參數是由其對象表示類的名稱。
可以使用泛型重寫上面的語句。如下語句所示 -
Class<Cat> catClass = c.getClass();
