Java 类的初始化顺序 附测试代码
2017-03-22 15:50
274 查看
类的初始化顺序有点忘了,于是写个个小Demo来测试一下,从输出的结果来看,大概按照如下顺序
1 父类的静态部分(第一次加载的话),这包括静态域,静态初始化字句
2 子类的静态部分(第一次加载的话),这包括静态域,静态初始化字句
3 父类的非静态部分,包括非静态实例,实例初始化字句
4 父类的构造器
5 子类的非静态部分,包括非静态实例,实例初始化字句
6 子类的构造器
00 同一个次序中,不同部分按照声明的顺序初始化
测试代码如下
结果如下
super static field 1
super static initialization
super static field 2
sub static field 1
sub static initialization
sub static field 2
super instance field 1
super instance initialization
super instance field 2
super constructor
sub instance field 1
sub instance initialization
sub instance field 2
sub constructor
1 父类的静态部分(第一次加载的话),这包括静态域,静态初始化字句
2 子类的静态部分(第一次加载的话),这包括静态域,静态初始化字句
3 父类的非静态部分,包括非静态实例,实例初始化字句
4 父类的构造器
5 子类的非静态部分,包括非静态实例,实例初始化字句
6 子类的构造器
00 同一个次序中,不同部分按照声明的顺序初始化
测试代码如下
class Out{ Out(String s){ System.out.println(s); } } class Super{ Out a = new Out("super instance field 1"); static Out b = new Out("super static field 1"); public Super(){ System.out.println("super constructor"); } { System.out.println("super instance initialization"); } static{ System.out.println("super static initialization"); } Out c = new Out("super instance field 2"); static Out d = new Out("super static field 2"); } class Sub extends Super{ Out a = new Out("sub instance field 1"); static Out b = new Out("sub static field 1"); public Sub(){ System.out.println("sub constructor"); } { System.out.println("sub instance initialization"); } static{ System.out.println("sub static initialization"); } Out c = new Out("sub instance field 2"); static Out d = new Out("sub static field 2"); } public class Test{ public static void main(String[] args){ Super a = new Sub(); } }
结果如下
super static field 1
super static initialization
super static field 2
sub static field 1
sub static initialization
sub static field 2
super instance field 1
super instance initialization
super instance field 2
super constructor
sub instance field 1
sub instance initialization
sub instance field 2
sub constructor
相关文章推荐
- java对象初始化顺序(含测试代码)
- java中类与继承类内初始化顺序的测试
- java中的代码初始化顺序
- java初始化顺序实验代码
- 关于java中初始化顺序的总结及其势力代码!希望高手们可以帮助补充
- java堆空间子父类顺序(1)开辟空间都为0(2)父类初始化不管值(3)把成员变量赋值的显示初始化(4)构造代码块(5)子函数初始化
- Java 初始化顺序,代码执行顺序
- java初始化与构造方法执行顺序测试
- [疯狂Java]面向对象:初始化块、初始化代码、初始化顺序
- 简单测试java里一个对象的初始化是按怎样的顺序执行的
- 关于Java代码初始化顺序
- java代码初始化顺序
- Java -- 程序中代码初始化顺序
- java静态代码快详解和初始化顺序
- 【自动化测试】java测试代码里面的执行顺序
- java 中try catch finally 的具体执行顺序返回结果+代码测试
- Java 含有继承类的代码初始化顺序
- java基础-显示代码,构造代码块 , 构造函数的初始化顺序
- Java中创建对象时,初始化成员变量的代码的执行顺序
- [java]java初始化顺序的代码解释