私がこれらのクラスを持っているとしましょう—申し訳ありませんが、ここで簡単な例を考えるのはちょっと難しいです。なぜ、やりたいのか、その答えは欲しくない!–:
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
!