java - 构造函数是如何执行的?

标签 java jvm initialization

我正在对讲座幻灯片进行一些修改,它说构造函数按以下方式执行:

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

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

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

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

我不明白的是,构造函数永远不能以此“开始”,因为即使它不形成类层次结构/关系,也会默认插入 super()。

这如何符合上面的描述?

最佳答案

构造函数(对于除 java.lang.Object 之外的每个类)必须以“super()”开头以调用其父类(super class)的构造函数,或以“this()”开头以调用同一类的另一个构造函数。如果您不在构造函数中包含其中任何一个,编译器将插入对 super() 的调用。构造函数以调用同一类中的另一个构造函数开始是没问题的,只要最终调用类中的构造函数调用父类(super class)构造函数即可。

关于java - 构造函数是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2948871/

相关文章:

arrays - Valgrind错误-条件跳转或移动取决于未初始化的值

java - 构建 Karaf 插件的最简单方法

java - 如何读取数组中的字符输入?

java.io.File contains() 有时返回不正确的结果

java - 处理 JDBC 关闭的连接

java - Akka java 线程在多个 JVM 上阻塞

java - 如何使用ASM进行字节码转换后定义类(类文件版本0.0)

java - Java(JVM)如何为每个线程分配堆栈

java - Java中如何检查数组中的元素是否存在

gcc - 静态 C 变量未初始化