我有两个类亲子使用继承时,静态块和初始化块以什么顺序执行?
public class Parent {
public Parent() {
System.out.println("Parent Constructor");
}
static {
System.out.println("Parent static block");
}
{
System.out.println("Parent initialisation block");
}
}
public class Child extends Parent {
{
System.out.println("Child initialisation block");
}
static {
System.out.println("Child static block");
}
public Child() {
System.out.println("Child Constructor");
}
public static void main(String[] args) {
new Child();
}
}
上述代码的输出将是
Parent static block
Child static block
Parent initialization block
Parent Constructor
Child initialization block
Child Constructor
为什么java中的顺序执行的代码?决定执行顺序的规则是什么?
非常有趣的问题。谢谢 –
随着更新版本的Java(1.7及更高版本),JVM将抛出一个运行时异常,因为即使您有一个静态块,它在该类中也找不到主要方法。 – lft93ryt