先看以下代码
public class HelloB extends HelloA{ public HelloB() { } { System.out.println("I’m B class"); } static { System.out.println("static B"); } public static void main(String[] args) { new HelloB(); }}class HelloA{ public HelloA() { } { System.out.println("I’m A class"); } static { System.out.println("static A"); }}
执行代码后输出
static Astatic BI’m A classI’m B class该问题涉及:静态初始化代码块、构造代码块、构造方法
当涉及到继承时,按照如下顺序执行:1、执行父类的静态代码块static { System.out.println("static A"); }
输出:static A
2、执行子类的静态代码块static { System.out.println("static B"); }
输出:static B
3、执行父类的构造代码块{ System.out.println("I’m A class"); }
输出:I'm A class
4、执行父类的构造函数public HelloA() { }
输出:无
5、执行子类的构造代码块{ System.out.println("I’m B class"); }
输出:I'm B class
6、执行子类的构造函数public HelloB() { }
输出:无