class Father{ public Father(){ System.out.println("...父类的构造方法..."); } static{ System.out.println("...父类的静态代码块..."); } { System.out.println("...父类的普通代码块..."); } } class Son extends Father{ public Son(){ System.out.println("...子类的构造方法..."); } static{ System.out.println("...子类的静态代码块..."); } { System.out.println("...子类的普通代码块..."); } } public class CodeBlock { public static void main(String[] args) { Son son = new Son(); } }
执行结果:
...父类的静态代码块... ...子类的静态代码块... ...父类的普通代码块... ...父类的构造方法... ...子类的普通代码块... ...子类的构造方法...
从执行结果可以看出:
静态代码块总是最先执行的,且父类的静态代码块优先执行于子类的静态代码块。
普通的代码块优先执行于构造方法
父类的普通代码块和构造方法优先于子类
时间: 2024-11-05 20:37:36