Java Object超类

我有一个奇怪的Java问题:

据我们所知:

  1. 所有Java类都扩展java.lang.Object
  2. 所有Java类都无法扩展自身

然后, java.lang.Object必须扩展java.lang.Object本身,因此,它应该是不可能的。 如何用Java实现Object?

Object是第一个规则的例外,没有超类。 来自JLS3 8.1.4 :

extends子句不能出现在Object类的定义中,因为它是原始类并且没有直接的超类。

你也可以用reflection来试试:

 Object.class.getSuperclass(); // returns null 

你最好把它想象成:

  1. 所有java类都必须实现java.lang.Object中方法隐含的接口。
  2. 具体类java.lang.Object提供了这些函数的默认实现。
  3. 所有其他java类都是从对象java.lang.Object派生的,可以选择使用或覆盖方法的默认实现。

两个要点是:所有类必须实现隐含的接口,Java语言规范为您提供(强制对您?)这些方法的默认实现是免费的。

对象不会扩展自己。 它是Java语言中所有其他对象的超类。 可以将其视为Java API树中所有对象的0级(或根)类 – 包括您创建的任何对象。

我还想指出,您发布的规则#2certificate您的问题不可能。 用于certificate你的问题的逻辑仅考虑#1,因此存在极大的缺陷。