我刚刚遇到这个问题,它让我感到意外.
超一流:
public class Foo {
@Override
public String toString(){
return String.format("Result = %s", calculate());
}
public double calculate(){
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
子类:
public class Bar extends Foo {
@Override
public String toString(){
return String.format("%s", super.toString());
}
@Override
public double calculate(){
return 123.456;
}
}
Run Code Online (Sandbox Code Playgroud)
司机:
public static void main(String[] args) {
System.out.println(new Bar().toString());
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下我想要1
的输出是我得到的输出123.456
如何阻止Foo toString()调用Bar calculate()?