参考博文:http://blog.csdn.net/gxf212/article/details/3510009
class Base { static int a = 1; public Base() { System.out.println(" 55555"); } static { System.out.println("Static Base"); } static void method() { System.out.println("Base"); } } class Sub extends Base { public Sub() { System.out.println(" 44444"); } static int b = 2; static { System.out.println("Static Sub"); } } public class Traversc { public static void main(String[] args) { Sub sub = new Sub();//先执行父类的构造函数,再执行子类的构造函数 Sub.method();//调用static程序段,先于构造函数执行,且永远只执行一次 //Sub.method(); //System.out.println("a=" + Sub.b); } }
总结:
1.构造函数,父类先执行然后再执行子类
2.static程序块先于构造函数执行,切只执行一次
3.当只单独调用static method方法时,子类的static块和所有的构造函数都不会被执行,只会执行父类的static块