小编Ant*_*tte的帖子

如何防止超类调用overriden子类方法?

我刚刚遇到这个问题,它让我感到意外.

超一流:

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()

java polymorphism inheritance overriding

2
推荐指数
2
解决办法
84
查看次数

标签 统计

inheritance ×1

java ×1

overriding ×1

polymorphism ×1