这是一些示例代码,
class Base
{
private int val;
Base() {
val = lookup();
}
public int lookup() {
//Perform some lookup
// int num = someLookup();
return 5;
}
public int value() {
return val;
}
}
class Derived extends Base
{
private int num = 10;
public int lookup() {
return num;
}
}
class Test
{
public static void main(String args[]) {
Derived d = new Derived();
System.out.println("d.value() returns " + d.value());
}
}
输出:d.value() 返回 0 // 我希望 10 因为lookup() 被覆盖,但不是 0!有人可以澄清一下吗?
的实例变量的初始化Derived
在其查找方法执行时尚未发生。如何确保在Derived
调用其方法时初始化其实例变量?