关于类初始化过程中各个元素的初始顺序
public class Father {public static Display a1 = new Display("a1");public Display b = new Display("b");static{Display a2 = new Display("a2");}public Father(){Display c = new Display("c");}}
?
public class Child extends Father{public static Display A1 = new Display("A1");public Display B = new Display("B");static{Display A2 = new Display("A2");}public Child(){Display C = new Display("C");}}?
public class Display {public Display(String name){System.out.println(name);}}?
public class Test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubChild child = new Child();}}?运行结果:
a1a2A1A2bcBC
?总结:
0.静态变量和静态代码块是与类相关的,所以优先于其他实例元素,如实例变量和构造函数.
1.实例变量优先于构造函数.
2.父类元素优先于子类元素.