版权声明:茅坑的石头 https://blog.csdn.net/lishuoboy/article/details/83963781
public class Parent {
static String name = "hello";
static {
System.out.println("parent static block");
}
{
System.out.println("parent block");
}
public Parent() {
System.out.println("parent constructor");
}
}
public class Child extends Parent {
static String childName = "hello";
static {
System.out.println("child static block");
}
{
System.out.println("child block");
}
public Child() {
System.out.println("child constructor");
}
public static void main(String[] args) {
new Child();
}
}
输出结果
结论:
父类静态块 → 子类静态块 → 父类块 → 父类构造器 → 子类块 → 子类构造器
注意:子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。