我有以下代碼:類A的構造函數調用由類B實現的抽象方法,該類從B類返回變量。此變量在A調用抽象方法時將爲null即使我在聲明中實例化了它。有什麼辦法可以這樣實例化嗎?在子類中未實例化的類變量Java
public abstract class A {
public A() {
isStringNull();
}
protected abstract String getMyString();
private void isStringNull() {
if (getMyString() == null) {
System.out.println("String is null :(");
} else {
System.out.println(getMyString());
}
}
}
public class B extends A {
private String amINull = "Of course not";
@Override
protected String getMyString() {
return amINull;
}
}
public static void main(String[] args) {
new B();
}
有人可以請解釋爲什麼字符串將爲空嗎?
因爲構造函數方法正在執行amINull賦值之前 – ControlAltDel
這就是爲什麼你不應該從構造函數中調用可重寫的方法。 – bradimus