猿问

关于构造方法初始化的问题

class A {

int a = f();

int f() {

return 1;

}

}class B extends A {  
    int b = 37;  
    int f() {  
        return b;  
    }  
}  

public class CtorDemo4 {  
    public static void main(String args[]) {  
        B bobj = new B();  
        System.out.println(bobj.a);  
        System.out.println(bobj.f());  
    }  
}

代码如上,
输出:0
37
在我看来,a应该是等于1啊,它不是应该调用的是A类里面的f()方法吗?
本人菜鸟,希望各位多多指点,感激不尽。

守着一只汪
浏览 475回答 4
4回答

慕容3067478

thinking in java,里面可以解决你所有的疑惑。

吃鸡游戏

Copperfield的解释有问题, int a = f(); 在A中的实例变量a 的 f()方法执行了,只是被子类的f()方法覆盖了,返回b,b还未初始化,所以返回0 
随时随地看视频慕课网APP

相关分类

Java
我要回答