所有类都默认继承自Object类,除非手动指定继承的类型,但是依然改变不了最顶层的父类是Object类。

public class Object {
 
    private static native void registerNatives();   //标记为native的方法是本地方法,底层是由C++实现的
    static {
        registerNatives();   //这个类在初始化时会对类中其他本地方法进行注册,本地方法不是我们SE中需要学习的内容,我们会在JVM篇视频教程中进行介绍
    }
 
    //获取当前的类型Class对象,这个我们会在最后一章的反射中进行讲解,目前暂时不会用到
    public final native Class<?> getClass();
 
    //获取对象的哈希值,我们会在第五章集合类中使用到,目前各位小伙伴就暂时理解为会返回对象存放的内存地址
    public native int hashCode();
 
      //判断当前对象和给定对象是否相等,默认实现是直接用等号判断,也就是直接判断是否为同一个对象
      public boolean equals(Object obj) {
        return (this == obj);
    }
  
    //克隆当前对象,可以将复制一个完全一样的对象出来,包括对象的各个属性
    protected native Object clone() throws CloneNotSupportedException;
 
    //将当前对象转换为String的形式,默认情况下格式为 完整类名@十六进制哈希值
    public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }
 
    //唤醒一个等待当前对象锁的线程,有关锁的内容,我们会在第六章多线程部分中讲解,目前暂时不会用到
    public final native void notify();
 
    //唤醒所有等待当前对象锁的线程,同上
    public final native void notifyAll();
 
    //使得持有当前对象锁的线程进入等待状态,同上
    public final native void wait(long timeout) throws InterruptedException;
 
    //同上
    public final void wait(long timeout, int nanos) throws InterruptedException {
        ...
    }
 
    //同上
    public final void wait() throws InterruptedException {
        ...
    }
 
    //当对象被判定为已经不再使用的“垃圾”时,在回收之前,会由JVM来调用一次此方法进行资源释放之类的操作,这同样不是SE中需要学习的内容,这个方法我们会在JVM篇视频教程中详细介绍,目前暂时不会用到
    protected void finalize() throws Throwable { }
}