java代码块执行顺序
父类
public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } static { System.out.println("父类静态代码块static father"); } { System.out.println("父类普通代码块CLASS father"); } }
子类
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(); } }
运行结果
java代码块执行顺序:遵循继承关系(先父后子)
静态代码块==>非静态代码块==>构造方法
静态代码块:类加载时即被执行,切只执行一次
非静态代码块:new()实体化对象时被执行,先于构造执行(每实例一个对象执行一次)
构造方法:new()实体化对象时被执行,后于非静态代码块执行(每实例一个对象执行一次)