java代码块执行顺序

父类

public class Father {

    public Father() {

        System.out.println("父类构造PUBLIC father");

    }

    static {

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

        System.out.println("父类普通代码块CLASS father");

    }

}
View Code

子类

public class Son extends Father {

    public Son() {

        System.out.println("子类构造PUBLIC son");

    }

    static {

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

        System.out.println("子类普通代码块CLASS son");

    }

    public static void main(String[] arg) {

        new Son();
        new Son();

    }
}
View Code

运行结果

java代码块执行顺序:遵循继承关系(先父后子)

静态代码块==>非静态代码块==>构造方法

静态代码块:类加载时即被执行,切只执行一次

非静态代码块:new()实体化对象时被执行,先于构造执行(每实例一个对象执行一次)

构造方法:new()实体化对象时被执行,后于非静态代码块执行(每实例一个对象执行一次)

原文地址:https://www.cnblogs.com/liu-chao-feng/p/6527614.html