可能重复:
强制基类使用自己的方法而不是覆盖的方法
假设我有这些类——抱歉,这里很难想出一个简单的例子;我不想要任何你为什么想要那样做的答案!–:
class Squarer
{
public void setValue(int v)
{
mV = v;
}
public int getValue()
{
return mV;
}
private int mV;
public void square()
{
setValue(getValue() * getValue());
}
}
class OnlyOddInputsSquarer extends Squarer
{
@Override
public void setValue(int v)
{
if (v % 2 == 0)
{
print("Sorry, this class only lets you square odd numbers!")
return;
}
super.setValue(v);
}
}
// auto s = new OnlyOddInputsSquarer();
OnlyOddInputsSquarer s = new OnlyOddInputsSquarer();
s.setValue(3);
s.square();
这行不通。当Squarer.square()
调用时setValue()
,它会去哪OnlyOddInputsSquarer.setValue()
一个会拒绝它的所有值(因为所有的正方形都是偶数)。有什么方法可以覆盖setValue()
,以便所有函数Squarer
仍然使用那里定义的方法吗?
PS:抱歉,Java 没有auto
你没听说过的关键字!我的一厢情愿。
编辑:我不能修改 Squarer
!