Java Object类

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();