Java父子类加载顺序

结论:父类静态成员变量 > 父类静态代码块 > 子类静态成员变量 > 子类静态代码块 > 父类非静态成员变量 > 父类非静态代码块 > 父类构造函数 > 子类非静态成员变量 > 子类非静态代码块 > 子类构造函数;子类和父类的静态方法和非静态方法只有在被调用时才会加载。

父类代码:

public class Fater {
    static Output output = new Output("父类静态成员变量");
    Output output1 = new Output("父类非静态成员变量");

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

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

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

    public static void method() {
        System.out.println("父类类静态方法");
    }

    public void method1() {
        System.out.println("父类类非静态方法");
    }
}

子类代码:

public class Son extends Fater {
    static Output output = new Output("子类静态成员变量");
    Output output1 = new Output("子类非静态成员变量");

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

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

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

    public static void method() {
        System.out.println("子类静态方法");
    }

    public void method1() {
        System.out.println("子类非静态方法");
    }
}

成员变量类:

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

测试输出:

public class Demo1 {
    public static void main(String[] args) {
        Son son = new Son();
    }
}

运行结果:

posted @ 2021-12-05 00:06  吃辣椒会上瘾  阅读(207)  评论(0编辑  收藏  举报