Java 静态块、构造方法加载顺序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhoukikoo/article/details/79918437

父类 ClassB.java

package com.ggsddu.base;

public class ClassB {
    public static String bstatic = "bstatic";

    static {
        System.out.println("父类static代码块");
    }

    {
        System.out.println("父类非static代码块");
    }

    public ClassB() {
        System.out.println("父类构造器");
    }
}

子类 ClassA.java

package com.ggsddu.base;

public class ClassA extends ClassB {

    public static String astatic = "astatic";

    static {
        System.out.println("子类static代码块");
    }

    {
        System.out.println("子类非static代码块");
    }

    public ClassA() {
        System.out.println("子类构造器");
    }
}

测试类 InstantiateObjectLoadProcess.java

package com.ggsddu.base;

public class InstantiateObjectLoadProcess {
    public static void main(String[] args) {
        System.out.println("ClassA.astatic-->" + ClassA.astatic);
        new ClassA();
    }
}

打印结果:

父类static代码块
子类static代码块
ClassA.astatic-->astatic
父类非static代码块
父类构造器
子类非static代码块
子类构造器

猜你喜欢

转载自blog.csdn.net/zhoukikoo/article/details/79918437
今日推荐