子类和父类之间的静态代码块、静态方法、非静态代码块、构造函数之间的执行关系

时间:2022-03-28 18:02:43

父类:

public class StaticShunXu {
    public static void test(){
        System.out.println("父类--静态方法"); //被子类的相同方法覆盖
    }
    static {
        System.out.println("父类--静态代码块");
    }

    public StaticShunXu() {
        System.out.println("父类--构造函数");
    }


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

}

子类:

public class StaticShunXuB extends StaticShunXu{
    public static void test(){
        System.out.println("子类--静态方法");
    }
    static {
        System.out.println("子类--静态代码块");
    }

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

    public StaticShunXuB() {
        System.out.println("子类--构造函数");
    }
}

执行结果:

父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
子类--静态方法