Java面向对象设计 - Java Object类
Java在java.lang包中有一个Object类。
所有Java类都直接或间接扩展Object类。
所有Java类都是Object类的子类Object类是所有类的超类。
Object类本身没有超类。
Object类的引用变量可以保存任何类的对象的引用。
以下代码声明对象类型的引用变量obj:
Object obj;
方法
Object类有九个方法,可以在Java中的所有类中使用。
- 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"; } }
什么是对象类?
Java中的每个对象都属于一个类。
Object类的getClass()方法返回Class对象的引用。
以下代码显示了如何获取Cat对象的Class对象的引用:
Cat c = new Cat(); Class catClass = c.getClass();
Class类是通用的,其形式类型参数是由其对象表示的类的名称。
我们可以使用泛型重写上面的语句。
Class<Cat> catClass = c.getClass();