Java面向?qū)ο笤O(shè)計(jì) - Java Object類
Java在java.lang包中有一個(gè)Object類。
所有Java類都直接或間接擴(kuò)展Object類。
所有Java類都是Object類的子類Object類是所有類的超類。
Object類本身沒有超類。
Object類的引用變量可以保存任何類的對象的引用。
以下代碼聲明對象類型的引用變量obj:
Object obj;
方法
Object類有九個(gè)方法,可以在Java中的所有類中使用。
- public String toString()
它是實(shí)現(xiàn)在Object類中,我們可以自定義它。
它返回對象的字符串表示形式。
通常,它用于調(diào)試目的。 - public boolean equals(Object obj)
它在Object類中實(shí)現(xiàn),我們可以自定義它。
它用于比較兩個(gè)對象的相等性。 - public int hashCode()
它在Object類中實(shí)現(xiàn),我們可以自定義它。
它返回對象的哈希碼(整數(shù))值。 - protected Object clone() throws
CloneNotSupportedException
它不在Object類中實(shí)現(xiàn),我們可以通過覆蓋克隆方法來自定義它。
它用于創(chuàng)建對象的副本。 - protected void finalize() throws Throwable
它不是在Object類中實(shí)現(xiàn),我們可以自定義它
它在對象被銷毀之前被垃圾收集器調(diào)用。 - public final Class getClass()
它在Object類中實(shí)現(xiàn),我們不能自定義它。
它返回對對象的Class對象的引用。 - public final void notify()
它是在Object類中實(shí)現(xiàn)的,我們不能自定義它。
此方法通知對象的等待隊(duì)列中的一個(gè)線程。 - public final void notifyAll()
它是在Object類中實(shí)現(xiàn)的,我們不能自定義它。
此方法通知對象的等待隊(duì)列中的所有線程。 - 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類中實(shí)現(xiàn)的,我們不能自定義它。
使對象的等待隊(duì)列中的線程等待,無論是否超時(shí)。
例子
以下代碼顯示如何重新實(shí)現(xiàn)Object類的toString()方法。
public class Test {
public String toString() {
return "Here is a string";
}
}
什么是對象類?
Java中的每個(gè)對象都屬于一個(gè)類。
Object類的getClass()方法返回Class對象的引用。
以下代碼顯示了如何獲取Cat對象的Class對象的引用:
Cat c = new Cat();
Class catClass = c.getClass();
Class類是通用的,其形式類型參數(shù)是由其對象表示的類的名稱。
我們可以使用泛型重寫上面的語句。
Class<Cat> catClass = c.getClass();
更多建議: