实例构造函数与静态构造函数执行顺序

Posted jianghuaxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实例构造函数与静态构造函数执行顺序相关的知识,希望对你有一定的参考价值。

一、结论:
 
1.实例构造函数与静态构造函数执行顺序
 
一、初始化顺序(依次是静态变量、静态构造函数、实例变量、实例构造函数)
二、初始化次数(静态的都只会初始化一次)
三、初始化时机(使用类引用任何静态成员之前对或者首次实例化类时会调用静态构造函数,通过静态构造函数初始化类级别的项,即静态字段非静态的则要在创建对象的时候才初始化);
 
2.创建子类实例时,其所有构造函数和变量的调用顺序为:
 
子类静态变量初始化>子类静态构造函数>父类静态变量初始化 > 父类静态构造函数 > 父类实例变量初始化>父类实例构造函数 > 子类实例变量初始化>本身实例构造函数。
 
 
二、例子:
父类:
技术分享图片
 
 
子类:
技术分享图片
 
主函数:
技术分享图片
 
 
当我创建子类Dog的实例时,执行结果如下:
技术分享图片
 
跟实例构造函数的调用顺序刚好相反,所以创建子类实例时,其所有构造函数和变量的调用顺序为:
子类静态变量初始化>子类静态构造函数>父类静态变量初始化 > 父类静态构造函数 > 父类实例变量初始化>父类实例构造函数 > 子类实例变量初始化>本身实例构造函数。

以上是关于实例构造函数与静态构造函数执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

静态构造函数, 静态成员初始化/调用顺序

java中成员变量代码块构造函数运行顺序

类加载时执行顺序

(Java)类实例化过程中,父类和子类的静态变量静态代码块成员变量构造函数的执行顺序是什么?

java中静态方法,静态变量,静态初始化器,构造函数,属性初始化都是啥时候调用的? 它们的先后顺序。

静态代码块构造代码块构造函数以及Java类初始化顺序