静态属性和静态块在子类和父类中的执行顺序

1.子类test1

 

public class Test1 extends Test2
{
    private static final class Factory
    {
      //在main方法执行Test1.factory()的时候调用下面这个属性的初始化
        public static final Test1 INSTANCE = new Test1();
     }

    private static String dd = "aaa"; //第三步执行

    private static final Test1 tt = new Test1();//第四步执行

    static
    {
        System.out.println("static 2");   //第五步执行
    }

    public static void main(String[] args)
    {
        Test1.factory();
    }

    public static Test1 factory()
    {
        return Factory.INSTANCE;
    }
}

  父类 test2

public class Test2
{
    private static final Test2 tt2 = new Test2();  //第一步执行

    static
    {
        System.out.println("static t2");   //第二步执行
    }
    public Test2()
    {
        System.out.println("Test2");
    }
}

 

 

在执行test1的main方法时,加载静态属性的顺序

你可能感兴趣的:(JAVA基础)