读书人

新手

发布时间: 2012-03-25 20:55:16 作者: rapoo

新手求助。
public abstract class go8 {
abstract void a();

go8() {
System.out.println("yiqian");
a();
System.out.println("yihou");
}

public static void main(String[] args) {
new go9();
}
}

class go9 extends go8 {
private int i = 1;

void a() {
System.out.println("a()" + i);//这里的i为什么输出的是0?
}

go9() {
System.out.println(i);
}
}


[解决办法]
看看类加载过程吧
http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html#44459
new go9()的执行顺序
1.0-->1.1-->1.2-->2.0-->2.1-->3.0-->4.0-->4.1-->5.0

Java code
public abstract class go8 {    abstract void a();    go8() {            //1.2        System.out.println("yiqian");//2.0        a();            //2.1        System.out.println("yihou");//4.0    }    public static void main(String[] args) {        new go9();    }}class go9 extends go8 {    private int i = 1;        //1.0初始化i为0   ;4.1 初始化i为1    void a() {                System.out.println("a()" + i);//    }    go9() {        //1.1        System.out.println(i);            //5.0    }} 

读书人网 >Eclipse开发

热点推荐