下面代码主要说明静态初始化块,普通初始化块,构造器的加载顺序:
//三个继承关系的类
public class A {
static{
System.out.println("A的静态初始化块");
}
{
System.out.println("A的普通初始化块");
}
public A() {
System.out.println("A的无参构造器");
}
}
public class B extends A{
static{
System.out.println("B的静态初始化块");
}
{
System.out.println("B的普通初始化块");
}
public B() {
System.out.println("B的无参构造器");
}
public B(String string) {
//通过this调用本类中的重载的构造器
this();
System.out.println("B的有参构造器,他的参数构造值string="+string);
}
}
public class C extends B{
static{
System.out.println("C的静态初始化块");
}
{
System.out.println("C的普通初始化块");
}
public C() {
super("传入B有参构造器的的参数");
System.out.println("C的无参构造器");
}