【发布时间】:2017-02-20 16:44:23
【问题描述】:
我正在浏览 Object 类 JAVA-docs,我们知道 Object 是所有类的基类。但我想知道,何时将 Object 类添加为超类? 它是编译时还是运行时(理想情况下应该在编译时)?
另外,正如我已经阅读过的,JVM 会自动检查一个类是否从父类继承,那么它不会将 Object 添加为超类以避免继承钻石问题,但是在抽象类/内部类的情况下会发生什么? Super class-Object 将添加到哪里?
在创建任何新的内置对象示例 HashMap 时,我们可以从源代码中看到内部工作,类似地,是否可以在 Java 源代码中的任何地方看到此功能,或者它是由内部编译器完成的?
【问题讨论】:
-
这可能是Software Engineering的问题。
-
类继承不可能在 Java 中引入“钻石问题”,因为除
Object之外的每个类都只有一个直接超类。Object没有超类,是所有类层次结构的根。正如下面的答案所暗示的那样,对于任何类,编译器都会确定Object何时需要成为直接超类。您是否阅读过 Java 语言规范 (JLS) 或 Java 教程?这些解释它,前者比较详细。熟悉文档并使用它是很好的。 -
@Dev-iL 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
标签: java inheritance jvm jvm-languages