Вот пример кода,
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());
}
}
output: d.value() возвращает 0//Я ожидал 10, поскольку lookup() переопределен, но не 0! может кто-нибудь прояснить это?
Инициализация переменных экземпляра Derived
не выполнялась в тот момент, когда выполняется его метод поиска. Как убедиться, что переменные экземпляра Derived
инициализируются при вызове метода?