我有以下代码:类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