参考博文: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块