如何将其变为覆盖?

时间:2014-02-24 01:10:37

标签: java override equals

你怎么做一些覆盖?我的书提供了基本的解释,但没有说明如何在代码中实现它,互联网也同样有用。我的指示是......

创建一个名为Rational的Java类: ...  覆盖等于,如果参数的分子和分母完全等于当前对象的分子和分母,则该方法返回true,否则返回false。

我以为我已经弄清楚如何进行覆盖方法,但经过进一步调查后,我觉得我搞砸了。

Rational.Equals(Rational x){
    if(x.numerator == a && x.denominator == b)
    {
      return true;
    }
    else
    {
      return false;
    }
  }

关于如何将其变为覆盖方法的任何提示或良好的阅读?

2 个答案:

答案 0 :(得分:0)

简单地说,当子类提供自己的具有相同签名(返回类型,名称和参数类型)的方法的实现作为超类时,方法会覆盖另一个方法,例如:

class SuperClass {
    void someMethod() {
        // some impl
    }
}

class SubClass extends SuperClass {
    @Override // @Override annotation not necessary, but good practice
    void someMethod() {
        // some overriding impl
    }
}

答案 1 :(得分:0)

类具有方法,当类扩展另一个类(每个类扩展Object类)时,它可以声明一个与超类中的签名具有相同签名的方法,因此它被称为覆盖。我想你应该写一些类似的东西:

class Rational {
  int numerator, denominator;

  @Override
  public boolean equals(Object o) {
    if (o instanceof Rational) {
      Rational rational = (Rational) o;
      return numerator == rational.numerator && denominator == rational.numerator;
    }
    return false;
  }
}