既然子类还没有构造,那么在超类构造函数中调用抽象方法是不是不安全呢?
但是,如果方法的行为不依赖于子类的构造,例如只返回一个关于子类的常量,它是否仍然不安全或者它会可靠地工作?
此外,如果它有效,如果我不想使超类抽象怎么办?
更新:最后一个问题
public class SuperClass {
public SuperClass() {
System.out.println(getValue());
}
public String getValue() {
return "superclass";
}
public static void main(String[] args) {
new SubClass();
}
}
class SubClass extends SuperClass {
public SubClass() {
super(); // Comment out this or not will not affect the result
}
public String getValue() {
return "subclass";
}
}
我写了一个测试,并弄清楚:结果是:subclass
感谢@Tim Pote的例子。