多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java 实例初始化器块 > 原文: [https://howtodoinjava.com/oops/java-instance-initializer/](https://howtodoinjava.com/oops/java-instance-initializer/) **Java 实例初始化器**是在执行[构造器](https://howtodoinjava.com/oops/java-constructors/)代码之前执行的代码块。 每当我们创建一个新对象时,这些初始化器就会运行。 ## 1\. 实例初始化语法 使用**大括号**创建实例初始化器块。 对象初始化语句写在括号内。 ```java public class DemoClass { //This is initializer block 1 { //statements } //This is initializer block 2 { //statements } } ``` ## 2\. Java 实例初始化器特性 实例初始化器具有以下特性。 * 我们可以在一个类中定义**多个初始化器**。 * 所有初始化器将按顺序执行,以使其出现在类主体中。 * 初始化器在调用父类构造器之后,在执行子类构造器之前运行。 请注意,如果我们未在子类的构造器中显式提供**第一条语句**,则 Java 会插入父类`super()`的默认构造器。 * 在完成所有初始化器后,将执行构造器的语句。 * 我们可以在初始化器中使用此类和父类的构造器的调用。 ## 3\. Java 实例初始化序列流程 基于以上给出的特性,让我们概述一下对象的实例初始化如何进行。 1. 子类构造器被调用。 2. 子类构造器的第一个语句为`super()`(或提供的显式构造器),因此将调用父类构造器。 3. 父类的初始化器按其出现顺序执行。 4. 父类构造器语句被执行。 5. 子类的初始化器按其出现顺序执行。 6. 子类构造器语句被执行。 ## 4\. Java 实例初始化器示例 让我们快速看一个示例,以演示以上理论。 ```java public class ParentClass { public ParentClass() { System.out.println("In ParentClass Constructor"); } //Instance Initializer { System.out.println("In ParentClass Instance Initializer"); } } ``` ```java public class ChildClass extends ParentClass { public ChildClass() { super(); //If not provided, JVM will insert it System.out.println("In ChildClass Constructor"); } //Instance Initializer 1 { System.out.println("In ChildClass Instance Initializer 1"); } //Instance Initializer 2 { System.out.println("In ChildClass Instance Initializer 2"); } } ``` ```java public class Main { public static void main(String[] args) { ChildClass childObj = new ChildClass(); } } ``` 程序输出。 ```java In ParentClass Instance Initializer In ParentClass Constructor In ChildClass Instance Initializer 1 In ChildClass Instance Initializer 2 In ChildClass Constructor ``` 学习愉快!