私人/公共课程的应用

时间:2014-05-08 23:42:34

标签: java class private public

我有这个烦人的代码:

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

这失败了。 我很难过,请帮忙。

1 个答案:

答案 0 :(得分:2)

方法m()需要确保setF方法中传递给BcheckF的内容的相反方向。正如AsetF所做的那样,B应该覆盖它,而不是按原样存储数字。使用super调用重写的setF方法,将相反的数字传递给它。

public void setF(int f){
    super.setF(-f);  // Replaces "[???]"
}