Java 是一门典型的面向对象语言,提供 extends
关键字使子类继承父类。
public class Student extends Person {
...
}
复制代码
但是创建 Person
类时不用使用 extends
继承 Object
类。
public class Person extends Object {
...
}
复制代码
因为,创建的类没有明确指明继承关系时,会在编译时自动继承 Object
类。可以使用 Object
类型的变量引用任何类型的实例:
Object sample = new Student(1001, "小咖", 20, "男");
复制代码
也可以将任意的 Object
实例转换为需要的类型:
Person p = (Person) sample;
复制代码
上面两个例子在编译器中是不会报错的。因此,Object
类是 Person
类的父类,每个类都是由 Object
扩展而来的。所以,熟悉 Object
类中提供的服务是十分重要的。
Java 中的基本类型不是对象,但也提供了相应的包装类型,如 int
基本类型对应 Integer
包装类型。但使用基本类型创建的数组是扩展自 Object
类,实际上是引用。
Object sample = new int[10];
复制代码
其实,所有的数组类型都是扩展了 Object
类。
下表为 Object
类的通用方法。
方法 | 描述 | 异常 |
---|---|---|
final native Class<?> getClass() |
返回对象的运行时类 | 无 |
native int hashCode() |
返回对象的散列码 | 无 |
boolean equals(Object obj) |
与其它对象是否相等 | 无 |
native Object clone() |
克隆并返回对象的副本 | CloneNotSupportedException |
String toString() |
返回对象的字符串表示 | 无 |
final native void notify() |
唤醒正在等待对象监听器上的一个线程 | 无 |
final native void notifyAll() |
唤醒正在等待对象监听器上的所有线程 | 无 |
final native void wait() |
导致当前线程等待,直到另一个线程调用此对象的notify() 或notifyAll() |
InterruptedException |
final native void wait(long timeout) |
导致当前线程等待,直到另一个线程调用此对象的notify() 或notifyAll() ,或者指定时间已到 |
InterruptedException |
final void wait(long timeout, int nanos) |
导致当前线程等待,直到另一个线程调用此对象的notify() 或notifyAll() |