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

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

posted @ 2014-12-12 14:20  快乐就好  阅读(527)  评论(0编辑  收藏  举报