我剛剛遇到了這個問題,它讓我吃了一驚。如何防止超類調用overriden子類方法?
超一流:
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()
?
您既可以創建'Foo'的實例而不是'Bar',或者簡單地不重寫'Foo#calculate'。 –
我正在處理的代碼需要這個結構,按照規範 –
你可以在Bar#calculate'裏面調用'super.calculate()'嗎? –