匿名代码块:在每次调用构造器创建对象之前执行
静态代码块:在类首次被加载的时候执行
Father类
public class Father {
static{
System.out.println("1---Father---------静态代码块");
}
{
System.out.println("2---Father---------匿名代码块");
}
public Father(){
this(3);
System.out.println("3---Father---------无参构造器");
}
public Father(int i){
System.out.println("4---Father---------有参构造器");
}
public void method(){
System.out.println("5---Father---------方法");
}
}
Son类
public class Son extends Father {
static{
System.out.println("6---son---------静态代码块");
}
{
System.out.println("7---son---------匿名代码块");
}
public Son(){
this(3);
System.out.println("8---son---------无参构造器");
}
public Son(int i){
System.out.println("9---son---------有参构造器");
}
public void method(){
System.out.println("10---son---------方法");
}
}
测试类
public class Test {
public static void main(String[] args) {
new Son();
}
}
执行结果:
1---Father---------静态代码块
6---son---------静态代码块
2---Father---------匿名代码块
4---Father---------有参构造器
3---Father---------无参构造器
7---son---------匿名代码块
9---son---------有参构造器
8---son---------无参构造器