私はこの問題に遭遇したばかりで、驚いたことがあります。スーパークラスがオーバーライドされたサブクラスメソッドを呼び出すのを防ぐ方法を教えてください。
スーパークラス:
public class Foo {
@Override
public String toString(){
return String.format("Result = %s", calculate());
}
public double calculate(){
return 1;
}
}
サブクラス:
public class Bar extends Foo {
@Override
public String toString(){
return String.format("%s", super.toString());
}
@Override
public double calculate(){
return 123.456;
}
}
ドライバ:
public static void main(String[] args) {
System.out.println(new Bar().toString());
}
私はこのシナリオで希望の出力は、私が手1
出力されています123.456
FooのtoString()
がBarのcalculate()
を呼び出すのを防ぐにはどうすればよいですか?
'Bar'ではなく' Foo'のインスタンスを作成するか、単に 'Foo#calculate'をオーバーライドしないでください。 –
私が取り組んでいるコードでは、この構造体が仕様通りに必要です –
'bar#calculate'の中で' super.calculate() 'を呼び出せますか? –