java面对对象入门(4)-程序块初始化
2024-09-06 19:35:20
Java实例初始化程序是在执行构造函数代码之前执行的代码块。每当我们创建一个新对象时,这些初始化程序就会运行。
1.实例初始化语法
用花括号创建实例初始化程序块。对象初始化语句写在括号内。
public class DemoClass {
//This is initializer block 1
{
//statements
}
//This is initializer block 2
{
//statements
}
}
2.Java实例初始化器功能
实例初始化器具有以下功能。
- 我们可以在一个类中定义多个初始化器。
- 所有初始化程序将按顺序执行,以使其出现在类主体中。
- 初始化程序在调用父类构造函数之后,在执行子类构造函数之前运行。请注意
super()
,如果我们未在子类的构造函数中显式提供第一个语句,则Java会插入父类的默认构造函数。 - 执行完所有初始化程序后,将执行构造函数的语句。
- 我们可以在初始化器中使用此类和父类的构造函数的调用。
3.Java实例初始化序列流程
基于以上给出的功能,让我们概述一下对象的实例初始化如何进行。
- 子类构造函数被调用。
- 子类构造函数的第一个语句为super()(或提供的显式构造函数),因此将调用父类构造函数。
- 父类的初始化程序按其出现顺序执行。
- 父类构造函数语句被执行。
- 子类的初始化程序按其出现顺序执行。
- 子类构造函数语句被执行。
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
最新文章
- Django model字段类型清单
- cocospod 安装和使用
- 【转载】C++异常机制的学习
- RMAN 备份与恢复深入解析(二)
- php拦截器(魔术方法)
- [OC笔记] static 关键字
- (原+转)ubuntu16中莫名死机及重新安装显卡驱动
- textarea
- Oracle的实例占用内存调整
- Android建立模拟器进行调试
- vue生命周期的理解
- 图解Windows 10下Visual Studio Code的下载和安装
- python的类和对象(类的静态字段)
- CSS border-radius边框圆角
- express依赖中模块引擎的使用
- linux 内核中一个全局变量引发的性能问题
- zookeeper 节点启动时的更新机制
- 平均值(Mean)、方差(Variance)、标准差(Standard Deviation) (转)
- .net core web api swagger 配置笔记
- android图片压缩总结
热门文章
- 看看AQS阻塞队列和条件队列
- tf.keras遇见的坑:Output tensors to a Model must be the output of a TensorFlow `Layer`
- LeetCode-指针法
- android开发实战-记账本APP(一)
- vscode python开发插件推荐
- 推荐一本书学习springcloud书籍的SpringCloud微服务全栈技术与案例解析
- 为什么不在spring容器管理controller
- 1751: n个素数构成等差数列
- C++读取MNIST数据集
- 🔥SpringBoot图文教程2—日志的使用「logback」「log4j」