我有两个班级父母和孩子
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();
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出将是
Parent static block
Child static block
Parent initialization block
Parent Constructor
Child initialization block
Child Constructor
Run Code Online (Sandbox Code Playgroud)
为什么Java按该顺序执行代码?确定执行顺序的规则是什么?
public class A {
public A(){
System.out.println("A created");
}
public static void main(String[] args) {
new B();
}
}
class B extends A{
public B(){
System.out.println("B created");
}
}
Run Code Online (Sandbox Code Playgroud)
上述程序的输出将是
A created
B created
Run Code Online (Sandbox Code Playgroud)
我无法理解如何调用构造函数A().在B()中没有超级调用.但仍然调用A().