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"; } }
Java中的每个对象都属于一个类。Object
类的getClass()
方法返回Class
对象的引用。
以下代码显示了如何获取Cat
对象的Class
对象的引用:
Cat c = new Cat(); Class catClass = c.getClass();
Class
类是通用的,其形式类型参数是由其对象表示类的名称。
可以使用泛型重写上面的语句。如下语句所示 -
Class<Cat> catClass = c.getClass();