Java Object超类

时间:2010-04-24 20:48:26

标签: java

我有一个奇怪的Java问题:

我们知道:

  1. 所有Java类都扩展java.lang.Object
  2. 所有Java类都无法自我扩展
  3. 然后,java.lang.Object必须扩展java.lang.Object,因此,它应该是不可能的。如何用Java实现Object?

3 个答案:

答案 0 :(得分:20)

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

  

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

您也可以尝试反思:

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

答案 1 :(得分:1)

你最好不要这样想:

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

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

答案 2 :(得分:0)

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

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