static块和构造函数的加载顺序
package test; public class Test { public static void main(String[] args) { B b = new B(); C c = new C(); } } class C extends A { static { System.out.println( "=================C=static==============" ); } public C() { System.out.println( "=================C===============" ); } } class B { static { System.out.println( "=================B=static==============" ); } public B() { System.out.println( "=================B===============" ); } } class A { static { System.out.println( "=================A=static==============" ); } public A() { System.out.println( "=================A===============" ); } }
输出结果:
=================B= static ============== =================B=============== =================A= static ============== =================C= static ============== =================A=============== =================C===============
结论:
1.static块比构造函数先加载
2.子类继承父类时,new子类的时候会先加载父类的static再加载子类的static,然后再加载父类的构造函数最后加载子类的构造函数