我有以下代码: 类A的构造函数调用由类B实现的抽象方法,该方法从类B返回一个变量。即使我在声明中实例化了它,该变量在A调用抽象方法时将为null。有没有办法可以这样实例化它?
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();
}
有人能解释一下为什么这个字符串会为空吗?