构造代码块:在类中成员变量的位置,用{}括起来,每次调用构造方法执行前,都会优先执行构造代码块。作用:可以把多个构造方法中的共同代码放到一起
public class Test {
public static void main(String[] args) {
new A();
}
}
class A{
static {
System.out.println("静态代码块");
}
A(){
System.out.println("构造方法");
}
{
System.out.println("匿名构造代码块");
}
}
执行顺序:
静态代码块->构造代码块->构造方法
子类继承中的执行顺序
class Father{
static {
System.out.println("load Father");
}
{
System.out.println("Father的匿名构造代码块");
}
Father(){
System.out.println("create Father");
}
}
class Son extends Father{
static {
System.out.println("load Son");
}
{
System.out.println("Son的匿名构造代码块");
}
Son(){
System.out.println("create Son");
}
}
public class Test {
public static void main(String[] args) {
new Son();
}
}
执行结果:
执行顺序:父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法