java中构造器执行前的初始化动作

本文详细解析类初始化过程,包括静态成员变量、静态块、静态方法的初始化顺序,以及静态方法的执行时机,并通过代码示例进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先需要肯定的是静态类成员变量、静态方法和静态块是属于类的,而不属于单个类对象。随着第一个类的创建之就已经存在。

2.子类继承父类时,对子类进行实例化,需要先创建父类实例后才会创建子类实例。

3.创建父类的时候,如果静态成员变量和静态块同时存在的话,要先创建静态成员变量,后创静态块,再运行构造器。

运行结果为

4.当父类这些运行完毕以后,接着初始化子类中的静态成员和静态块。随后再执行父类的构造器,初始化父类普通成员变量和方法,最后初始化子类中的成员变量和方法。

运行结果为:

5.那静态方法是在什么时候初始化的呢?修改上面的主函数为

其结果如下:

直接使用静态方法之前,静态变量就已经存在了,且静态块已经完成的赋值运算。说明静态方法是在静态块之后、构造器之前运行的。

6.总结如下:

       类初始化对象其运行的先后顺序为:父类中的静态成员变量、父类中的静态块、父类中的静态方法、子类中的静态成员变量、子类中的静态块、子类中的静态方法、父类的构造器、父类中的普通成员变量、父类中的普通方法、子类构造器、子类普通成员变量、子类中的普通方法。父类的构造器实际是通过super()套用在子类的构造器之中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值