继承时父子类都有一个静态语句块,实例子类对象,为什么执行顺序是先父类后子类呢?请高手指教!!!

解决方案 »

  1.   

    静态语句是在编译的时候就初始/执行
    所以是最先执行的语句快.
    constructor是只有在创建对象的时候才执行,所以静态语句是比constructor先执行的.
     class c1 extends c2 {}; 是先编译C2,这时候执行 c2 中的static(如果父类中的静态变量不先初始,那么在子类中就用不了,这也就是说父类的静态变量/语句先执行)然后编译C1, C1 的静态执行然后是C1 静态方法 public static void main()....如果在main()里面有 对象创建,这时候就是父类的constructor,然后是子类的constructor一个例子:
    http://keshuwei.wordpress.com/2010/11/10/the-execute-order-between-static-and-constructor/
      

  2.   

    constructor是先父类后子类,而static比constructor还要在前。这是java设计者的原因。