IT干货网

java类与继承的执行顺序

lxf 2022年03月15日 编程设计 185 0

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.方法体

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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

java静态初始化数据