show you the code
public class Test
{
public static Test t1 = new Test();
public Test() {
// TODO Auto-generated constructor stub
System.out.println("Test父类构造方法");
}
{
System.out.println("Test父类非静态块");
}
static
{
System.out.println("Test父类静态块");
}
}
public class TestSon extends Test{
public static TestSon t2 = new TestSon();
public TestSon() {
// TODO Auto-generated constructor stub
System.out.println("Test子类构造方法");
}
{
System.out.println("Test子类非静态块");
}
static
{
System.out.println("Test子类静态块");
}
}
public class TestFatherAndSon {
public static void main(String[] args) {
TestSon son=new TestSon();
}
}
- 运行结果:
Test父类非静态块
Test父类构造方法
Test父类静态块
Test父类非静态块
Test父类构造方法
Test子类非静态块
Test子类构造方法
Test子类静态块
Test父类非静态块
Test父类构造方法
Test子类非静态块
Test子类构造方法
类的加载顺序:
(1) 父类静态对象和静态代码块
(2) 子类静态对象和静态代码块
(3) 父类非静态对象和非静态代码块
(4) 父类构造函数
(5) 子类 非静态对象和非静态代码块
(6) 子类构造函数