执行顺序
首先执行静态代码块
接着执行构造代码块
最后指向构造方法
静态代码块 >>> 构造代码块 >>>> 构造方法
public class People {
{
System.out.println("父类构造代码块");
}
static {
System.out.println("父类静态代码块");
}
public People() {
System.out.println("父类构造方法");
}
public People(String str){
System.out.println("父类含参构造方法");
}
}
public class Student extends People{
{
System.out.println("子类构造代码块");
}
static {
System.out.println("子类静态代码块");
}
public Student() {
//super(null);
System.out.println("子类构造方法");
}
public static void main(String[] args) {
new Student();
}
}
输出结果:
父类静态代码块
子类静态代码块
父类构造代码块
父类构造方法
子类构造代码块
子类构造方法
super(null)注释取消掉
输出结果:
父类静态代码块
子类静态代码块
父类构造代码块
父类含参构造方法
子类构造代码块
子类构造方法
网友评论