我刚刚遇到了这个问题,它让我吃了一惊。如何防止超类调用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()'吗? –