类加载执行顺序

听了很久的类加载执行顺序,本身一直没有实践过,今天休息时想到这个问题,亲自动手验证以下:测试

上代码spa

public class Domain {

    public Domain(String str){
        System.out.println(str);
    }
}


public class SuperClass {

    private static Domain d1 = new Domain("father static member variable");

    private Domain d2 = new Domain("father common member variable");

    static{
        System.out.println("father static code block");
    }

    {
        System.out.println("father dynamic code block");
    }

    SuperClass(){
        System.out.println("father no arguments constructor");
    }

}


public class SubClass extends SuperClass {

    private static Domain d1 = new Domain("child static member variable");

    private Domain d2 = new Domain("child common member variable");

    static {
        System.out.println("child static code block");
    }

    {
        System.out.println("child dynamic code block");
    }


 public SubClass(){
        System.out.println("child no arguments constructor");
    }

 public static void main(String[] args){ SubClass t1 = new SubClass(); } }

以上三个类,SubClass继承自SuperClass,Domain为测试用的类。执行结果以下:code

相关文章
相关标签/搜索