构造函数是如何执行的?

sim*_*ion 6 java jvm initialization

我正在从演讲幻灯片中做一些修改,它说构造函数以下列方式执行:

  1. 如果构造函数以此开头,则递归执行指示的构造函数,然后转到步骤4.

  2. 调用显式或隐式指示的超类构造函数(除非此类是java.lang.Object).

  3. 按照在此类中声明它们的顺序初始化对象的字段.

  4. 执行此构造函数的其余部分.

我不明白的是构造函数永远不会"启动"它,因为即使它没有形成类层次结构/关系,默认情况下插入super().

这与上面的描述有什么关系?

Nat*_*hes 8

构造函数(对于除java.lang.Object之外的每个类)必须以"super()"开头,调用其超类的构造函数或"this()",以调用同一个类的另一个构造函数.如果在构造函数中没有包含其中任何一个,编译器将插入对super()的调用.对于构造函数来说,可以从调用同一个类中的另一个构造函数开始,只要最终调用类中的构造函数来调用超类构造函数即可.