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,然后再加载父类的构造函数最后加载子类的构造函数

posted @ 2017-11-13 11:40  七月蜀葵  阅读(538)  评论(0编辑  收藏  举报