我有这个烦人的代码:
class A{
private int f=0;
public void setF(int _f){f=_f;}
public boolean checkF(int expected){return f==expected;}
}
class B extends A{
public void setF(int f){[???]}
public void m(){
setF(3);
assert checkF(-3);
setF(8);
assert checkF(-8);
}
}
public class Exercise{
public static void main(String [] arg){
new B().m();
}
}
[???]是我需要回答的地方。 我不确定如何将B类的setF(int f)链接到A类的setF(int f)。 这是我的第一个想法:
A an = new A();
an.setF(f);
这失败了。 我很难过,请帮忙。
答案 0 :(得分:2)
方法m()
需要确保setF
方法中传递给B
中checkF
的内容的相反方向。正如A
中setF
所做的那样,B
应该覆盖它,而不是按原样存储数字。使用super
调用重写的setF
方法,将相反的数字传递给它。
public void setF(int f){
super.setF(-f); // Replaces "[???]"
}