【发布时间】:2013-04-19 15:44:00
【问题描述】:
我是 Java 新手,正在阅读 Sun 基础教程并看到“在 java.lang 包中定义的 Object 类定义并实现了所有类共有的行为——包括您编写的类。”我想知道如何如果我的类没有从其他类继承,Object 可以是我定义的类的根父类。
【问题讨论】:
标签: java object inheritance
我是 Java 新手,正在阅读 Sun 基础教程并看到“在 java.lang 包中定义的 Object 类定义并实现了所有类共有的行为——包括您编写的类。”我想知道如何如果我的类没有从其他类继承,Object 可以是我定义的类的根父类。
【问题讨论】:
标签: java object inheritance
如果您继续阅读same page (强调我的):
除了没有超类的
Object,每个类都只有一个直接超类(单一继承)。 在没有任何其他显式超类的情况下,每个类都隐含地是Object的子类。
【讨论】:
这是一种隐含的行为。您的所有类都扩展了 Object(直接或不直接)。
public class MyClass 等价于public class Myclass extends Object
【讨论】:
这就是 Java 编译器完成的“魔法”:当你编写时
public class MyClass {
...
}
Java 编译器将其视为
public class MyClass extends java.lang.Object {
...
}
【讨论】:
之所以如此,是因为Java Language Specification (specifically section 8.1.4) 是这样说的:
给定 C
1,...,Fn> (n ≥ 0, C ≠ Object) 的(可能是通用的)类声明,直接类类型 C 1,...,Fn> 的超类是 C 声明的 extends子句中给出的类型,如果是 extends 子句存在,否则Object。
【讨论】: