publicclassLoadClassTest{publicstaticvoidmain(String[] args){System.out.println("初始化顺序,如下:");Son son =newSon();}}classFather{{System.out.println("父类普通代码块");}static{System.out.println("父类静态代码块");}Integer age =initAge();staticString name =initName();privatestaticStringinitName(){System.out.println("父类静态属性");return"爸爸";}privateintinitAge(){System.out.println("父类普通属性");return45;}}classSonextendsFather{staticString name =initName();int age =initAge();{System.out.println("子类普通代码块");}static{System.out.println("子类静态代码块");}privatestaticStringinitName(){System.out.println("子类静态属性");return"儿子";}privateintinitAge(){System.out.println("子类普通属性");return23;}}
结论首先,加载父类中的静态代码块和静态属性,按照静态代码块和静态属性在代码中从上到下出现的先后顺序加载;然后,加载子类中的静态代码块和静态属性,按照静态代码块和静态属性在代码中从上到下出现的先后顺序加载;其次,加载父类中的普通代码块和普通属性,按照普通代码块和普通属性在代码中从上到下出现的先后顺序加载;最后,加载子类中的普通代码块和普通属性,按照普通代码块和普通属性在代码中从上到下出现的先后顺序加载;验证示例代码public class LoadClassTest { public