我正在对讲座幻灯片进行一些修改,它说构造函数按以下方式执行:
如果构造函数以此开头,则递归执行指示的构造函数,然后转到第4步。
调用显式或隐式指示的父类(super class)构造函数(除非此类是
java.lang.Object
)。按照在此类中声明的顺序初始化对象的字段。
执行此构造函数主体的其余部分。
我不明白的是,构造函数永远不能以此“开始”,因为即使它不形成类层次结构/关系,也会默认插入 super()。
这如何符合上面的描述?
最佳答案
构造函数(对于除 java.lang.Object 之外的每个类)必须以“super()”开头以调用其父类(super class)的构造函数,或以“this()”开头以调用同一类的另一个构造函数。如果您不在构造函数中包含其中任何一个,编译器将插入对 super() 的调用。构造函数以调用同一类中的另一个构造函数开始是没问题的,只要最终调用类中的构造函数调用父类(super class)构造函数即可。
关于java - 构造函数是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948871/