サブクラスはまだ構築されていないため、スーパークラスのコンストラクターで抽象メソッドを呼び出すのは安全ではありませんか?
ただし、メソッドの動作がサブクラスの構成に依存しない場合、たとえば、サブクラスに関して定数を返すだけの場合、それはまだ安全ではないのでしょうか、それとも確実に動作しますか?
さらに、それが機能する場合、スーパークラスを抽象化したくない場合はどうすればよいですか?
更新:最後の質問について
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の例に感謝します。