父类子类代码块执行顺序

测试代码如下

public class Children extends Parent {
    public Children() {
        System.out.println("空子类构造器");
    }
    static {
        System.out.println("子类静态代码块");
    }
    {
        System.out.println("子类构造代码块");
    }
}
public class Parent {
    public Parent() {
        System.out.println("空父类构造器");
    }
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类构造代码块");
    }
}

测试代码:

public class Parent {
    public Parent() {
        System.out.println("空父类构造器");
    }
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类构造代码块");
    }
}

执行结果如下

父类静态代码块
子类静态代码块
父类构造代码块
空父类构造器
子类构造代码块
空子类构造器
父类构造代码块
空父类构造器
子类构造代码块
空子类构造器

总结:顺序是:父类静态代码块-》子类静态代码块-》父类构造代码块-》父类构造器-》子类构造代码块-》空子类构造器

当再次调用的时候 依然要调用父类构造代码块和父类构造器-》然后子类构造代码块-》子类构造器

你可能感兴趣的:(父类子类代码块执行顺序)