java 父类 子类 代码块 静态代码块 构造器执行顺序
废话不多说直接上代码
public class Father {
String name;
{
System.out.println("父类代码块");
}
static {
System.out.println("父类静态块");
}
public Father() {
System.out.println("父类无参构造器");
}
public Father(String name) {
this.name = name;
System.out.println("父类有参构造器");
}
}
public class Son extends Father {
String name;
{
System.out.println("子类代码块");
}
static {
System.out.println("子类静态块");
}
public Son(){
System.out.println("子类无参构造器");
}
public Son(String name) {
this.name = name;
Father father = new Father(name);
System.out.println("子类有参构造器");
}
public static void main(String[] args) {
new Son("张三");
}
}
结果:
父类静态块
子类静态块
父类代码块
父类无参构造器
子类代码块
父类代码块
父类有参构造器
子类有参构造器
分析:
1 父类静态代码块
2 子类静态代码块
3 父类代码块 第一次 new Father() 前(说明,每次实例化类执行)
4 父类无参构造器 new Father() 执行方法
5 子类代码块 new Son(name) 前
6 父类代码块 第二次 new Father(name) 前
7 父类有参构造器 执行构造器 执行方法
8 子类有参构造器 执行构造器 执行方法
欢迎拍砖。