Java实例初始化程序是在执行构造函数代码之前执行的代码块。每当我们创建一个新对象时,这些初始化程序就会运行。

1.实例初始化语法

花括号创建实例初始化程序块。对象初始化语句写在括号内。

public class DemoClass {

    //This is initializer block 1
{
//statements
} //This is initializer block 2
{
//statements
}
}

2.Java实例初始化器功能

实例初始化器具有以下功能。

  • 我们可以在一个类中定义多个初始化器
  • 所有初始化程序将按顺序执行,以使其出现在类主体中。
  • 初始化程序在调用父类构造函数之后,在执行子类构造函数之前运行。请注意super(),如果我们未在子类的构造函数中显式提供第一个语句,则Java会插入父类的默认构造函数。
  • 执行完所有初始化程序后,将执行构造函数的语句。
  • 我们可以在初始化器中使用此类和父类的构造函数的调用。

3.Java实例初始化序列流程

基于以上给出的功能,让我们概述一下对象的实例初始化如何进行。

  1. 子类构造函数被调用。
  2. 子类构造函数的第一个语句为super()(或提供的显式构造函数),因此将调用父类构造函数。
  3. 父类的初始化程序按其出现顺序执行。
  4. 父类构造函数语句被执行。
  5. 子类的初始化程序按其出现顺序执行。
  6. 子类构造函数语句被执行。

4.Java实例初始化示例

让我们快速地看一个演示以上理论的例子。
ParentClass.java

public class ParentClass
{
public ParentClass()
{
System.out.println("In ParentClass Constructor");
} //Instance Initializer
{
System.out.println("In ParentClass Instance Initializer");
}
}

ChildClass.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");
}
}

Main.java

public class Main
{
public static void main(String[] args)
{
ChildClass childObj = new ChildClass();
}
}

程序输出

In ParentClass Instance Initializer
In ParentClass Constructor
In ChildClass Instance Initializer 1
In ChildClass Instance Initializer 2
In ChildClass Constructor

更多精彩请关注

最新文章

  1. Django model字段类型清单
  2. cocospod 安装和使用
  3. 【转载】C++异常机制的学习
  4. RMAN 备份与恢复深入解析(二)
  5. php拦截器(魔术方法)
  6. [OC笔记] static 关键字
  7. (原+转)ubuntu16中莫名死机及重新安装显卡驱动
  8. textarea
  9. Oracle的实例占用内存调整
  10. Android建立模拟器进行调试
  11. vue生命周期的理解
  12. 图解Windows 10下Visual Studio Code的下载和安装
  13. python的类和对象(类的静态字段)
  14. CSS border-radius边框圆角
  15. express依赖中模块引擎的使用
  16. linux 内核中一个全局变量引发的性能问题
  17. zookeeper 节点启动时的更新机制
  18. 平均值(Mean)、方差(Variance)、标准差(Standard Deviation) (转)
  19. .net core web api swagger 配置笔记
  20. android图片压缩总结

热门文章

  1. 看看AQS阻塞队列和条件队列
  2. tf.keras遇见的坑:Output tensors to a Model must be the output of a TensorFlow `Layer`
  3. LeetCode-指针法
  4. android开发实战-记账本APP(一)
  5. vscode python开发插件推荐
  6. 推荐一本书学习springcloud书籍的SpringCloud微服务全栈技术与案例解析
  7. 为什么不在spring容器管理controller
  8. 1751: n个素数构成等差数列
  9. C++读取MNIST数据集
  10. 🔥SpringBoot图文教程2—日志的使用「logback」「log4j」