java的初始化

public class Base {
    private String baseName = "base";
    public Base() {
        callName();
    }
    public void callName() {
        // TODO Auto-generated method stub
        System.out.println(baseName);
    }
    static class Sub extends Base {
        private String baseName = "sub";
        public void callName() {
            System.out.println(baseName);
        }
    }
    public static void main(String[] args) {
        Base sub = new Sub();
    }
}

以上结果输出什么呢?null

分析:分配好内存空间之后,初始化的顺序为 :父类静态块、子类静态块、父类初始化语句、父类构造器、子类初始化语句、子类构造器。父类构造器执行的时候,调用了子类的覆写方法,然而子类的类字段还在刚初始化阶段,刚完成内存布局,只能输出null

posted on 2015-10-07 13:28  程序猿&李  阅读(74)  评论(0)    收藏  举报

导航