java初始化顺序

来源:互联网 发布:c语言程序贪吃蛇 编辑:程序博客网 时间:2024/05/29 06:46

public class Father {int a=1;static int b=2;{System.out.println("father-a=="+a);System.out.println("father-b=="+b);}static{//System.out.println("a=="+a);System.out.println("father-static-b=="+b);}public Father(){System.out.println("father-构造方法-a=="+a);System.out.println("father-构造方法-b=="+b);}}

public class Son extends Father{int a=1;static int b=2;{System.out.println("son-a=="+a);System.out.println("son-b=="+b);}static{//System.out.println("a=="+a);System.out.println("son-static-b=="+b);}public Son(){System.out.println("son-构造方法-a=="+a);System.out.println("son-构造方法-b=="+b);}}

测试:
new Son();
输出:
father-static-b==2
son-static-b==2

father-a==1
father-b==2

father-构造方法-a==1
father-构造方法-b==2

son-a==1
son-b==2

son-构造方法-a==1
son-构造方法-b==2
可以看出,初始化顺序应该是:
1、父类静态初始化块
2、子类静态初始化块
3、父类初始化块
4、父类构造器
5、子类初始化块
6、子类构造器

又由于在初始化块中输出了变量的值,说明在进入初始化块之前,变量已经初始化完成了。而且,据说也是静态变量优先于实例变量。
0 0
原创粉丝点击