月度归档:2014年04月

因为 Java 在构造对象时,会调用子类的方法,所以。。。

public class P {
    private int i = 100;
    protected String[] s = new String[getI()];

    public int getI() {
        return i;
    }
}
public class C extends P {
    private int i = 2;

    public int getI() {
        return i;
    }

    public static void main(String[] args) {
        C c = new C();
        System.out.println(c.s.length);
    }

}

C.main 输出的结果是 0,因为父类构造函数中,调用子类 getI(),子类还没有初始化,所以 getI() == 0