最近聊天说到了类的加载顺序,顺口说了自己记得的但是不知道对不对,今天抽闲验证了一下。
测试代码:
public class ParentTest {
static {
System.out.println("步骤1");
}
public ParentTest(){
System.out.println("步骤2");
}
}
public class SubclassTest extends ParentTest {
static {
System.out.println("步骤3");
}
public SubclassTest(){
System.out.println("步骤4");
}
public void HelloTest(){
System.out.println("HelloTest");
}
public static void main(String[] args) {
SubclassTest subclassTest = new SubclassTest();
subclassTest.HelloTest();
}
}
执行结果:
步骤1
步骤3
步骤2
步骤4
HelloTest
从结果可以看出是先执行父类和子类的静态方法,然后执行父类和子类的构造方法,最后执行调用方法。