0

我不确定我是否有一个正确的 Java 初始化机制模型。每个类遵循以下内容:

  1. 初始化超类,如果存在的话
  2. 初始化自己

初始化如下:

  1. 初始化在初始化程序之外设置其值的静态和实例变量。
  2. 运行静态初始化块
  3. 运行构造函数块

那是准确/正确的吗?

4

2 回答 2

1

代码执行如下 -

静态初始化块在第一次加载类时运行一次。

静态变量

所有超级构造函数。

实例 init 块在构造函数调用 super() 之后运行。

实例变量。

(初始化块按照它们出现的顺序执行。)

于 2012-04-18T16:39:00.390 回答
1

根据Java 语言规范,您的假设或多或少是正确的。例外情况是:

  1. 实例变量在类初始化后(与构造函数一起)构造时运行,
  2. 具有编译时常量表达式的最终静态变量甚至在尝试加载超类之前就已加载,并且
  3. 静态初始化块与静态变量一起作为一个块运行,按照它们在代码中出现的顺序。
于 2012-04-18T16:14:13.353 回答