关于Java变量初始化顺序问题实践

来源:互联网 发布:淘宝店铺访问来源 编辑:程序博客网 时间:2024/05/17 04:00

逛逛论坛,看到里面讨论Java类变量初始化顺序问题,然后自己也想了一下,发现与讨论有点出入,怀疑记忆出了问题,然后马上上机验证,得出一下结论:

Java类变量初始化顺序为:父类静态成员初始化——>父类静态块初始化——>子类静态成员初始化——>子类静态块初始化——>父类成员变量初始化——>父类代码块初始化——>父类构造方法——>子类成员变量初始化——>子类代码块初始化——>子类构造方法


1、测试类:Test

public class Test {public Test(String string) {System.out.println(string);}}

2、Father类:

public class Father {static Test father = new Test("父类静态成员初始化");Test father2 = new Test("父类成员变量初始化");static {System.out.println("父类静态块初始化");}{System.out.println("父类代码块代码块");}public Father() {System.out.println("父类构造方法");}public Father(String string) {System.out.println(string);}}


3、Son类:

public class Son extends Father {static Test son = new Test("子类静态成员初始化");Test son2 = new Test("子类成员变量初始化");static {System.out.println("子类静态块初始化");}{System.out.println("子类代码块代码块");}public Son() {System.out.println("子类构造方法");}public Son(String string) {System.out.println(string);}}

4、场景类
public class TestMain {    public static void main(String[] args) {        new Son();    }}


运行结果:


很显然上面说的运行结果是正确的。



0 0
原创粉丝点击