【问题标题】:How do all classes inherit from Object?所有类如何从 Object 继承?
【发布时间】:2015-09-10 05:15:09
【问题描述】:

所有类都继承自java.lang.Object,尽管extends Object(通常)不会在任何地方写出。这怎么可能?

【问题讨论】:

    标签: java class object inheritance


    【解决方案1】:

    如果你没有明确地写extends Object,编译器会为你做这件事。所以知道一个类只能扩展一个超类,编译器会查看层次结构并将最高超类扩展为Object。所以每个类都会直接或间接继承Object类。

    Object 类是一个特例,因为它不扩展任何东西。

    最后,如果你要编译一个简单的类并反编译它,你会看到编译器插入扩展 java.lang.Object(或 等效的字节码) 进入课堂

    【讨论】:

    • 我想知道你是否可以在字节码中解决这个问题并制作其他不扩展任何东西的类?如果是这样,这可能会提高程序的效率。
    【解决方案2】:

    Object 是所有类的隐式直接/间接超类。

    来自Oracle Java doc

    定义:从另一个类派生的类称为 子类(也是派生类、扩展类或子类)。这 派生子类的类称为超类(也 基类或父类)。

    除了没有超类的 Object 之外,每个类都有一个并且 只有一个直接超类(单一继承)。 在没有任何 其他显式超类,每个类都是隐式的子类 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      相关资源
      最近更新 更多