首页 > 代码库 > java类与继承的执行顺序

java类与继承的执行顺序

1.子类

public class TestClassLife extends TestClassLifeSuper {        public TestClassLife() {        System.out.println("3.构造行数被访问");    }    {        System.out.println("2.初始化块被访问");    }    static {        System.out.println("1.静态初始化块被访问");    }     public void Go() {             System.out.println("4.方法体");    }}

2.父类

public class TestClassLifeSuper {        public TestClassLifeSuper() {        System.out.println("3.父构造行数被访问");    }    {        System.out.println("2.父初始化块被访问");    }    static {        System.out.println("1.父静态初始化块被访问");    }    private static String a = "1";        public void Go() {        String b = a;        System.out.println("4.父方法体");    }}

最终执行结果

1.父静态初始化块被访问
1.静态初始化块被访问
2.父初始化块被访问
3.父构造行数被访问
2.初始化块被访问
3.构造行数被访问
4.方法体

总统逻辑,先静态初始化,然后普通初始化,然后构造函数,先父后子。特殊情况,子类的静态初始化会紧跟父类的静态初始化

java类与继承的执行顺序