我正在浏览Object类JAVA-docs,因为我们知道Object是所有类的基类。但我想知道,当Object类被添加为超类时? 是编译时还是运行时(理想情况下应该是在编译时)?
同样,我已经阅读过JVM会自动检查一个类是否继承自父类,那么它不会将Object作为超类添加以避免继承 - 菱形问题,但是在抽象类/内部类的情况下会发生什么? 将添加Super class-Object在哪里?
在创建任何新的内置对象示例HashMap时,我们可以从源代码看到内部工作,同样可以在Java源代码中的任何地方看到此功能,还是由内部编译器完成?
答案 0 :(得分:5)
如果您没有指定超类,则默认为java.lang.Object
。超类是在编译时确定的。对于abstract
(inner
或static
)类,没有显式超类型;超级类型是java.lang.Object
。