如何在重写的方法中调用原始方法

How to invoke original method inside an overridden method

class Object{

    String x;
    int y;

    Object (String a, int b){
        this.x = a;
        this.y = b;

    @Override
    boolean equals(Object obj){

         return (this.x.equals(obj.x)) && this.y == obj.y);
    }
}

我在这里尝试编写一个覆盖 equals() 的方法,以便同时使两个值(一个字符串和一个整数)相等。为了测试字符串相等性,我使用了我覆盖的原始 equals() 方法。

我可以做到没有错误吗?或者我不能在覆盖它的方法中使用原始的 equals() 方法吗?有没有更好的方法来实现这一目标?

我不太能在网上找到这个问题的答案,但这可能是因为我不知道这种情况的技术措辞。

谢谢

通话:

super.whatevername();

或者在这种情况下:

super.equals(someObject);

这将调用超类的方法

顺便说一下,equals 的原始方法是

public boolean equals(Object obj)

顺便说一下,您的整个 return 块可以替换为:

return (this.x.equals(obj.x)) && this.y == obj.y);

你这样做的方式效率低下,让我感到畏缩:/

我认为问题在于您没有正确覆盖 Object.equals() 方法。如果您试图检查 String 和 int 是否相等以使您的对象相等,听起来您想要一个新对象来表示 String 和 int 一起表示的任何内容:

class MyObj {
    private String str;
    private int num;
    ...
}

(使用适当的 getter 和 setter 方法)

然后你可以覆盖 MyObj.equals() 像这样:

@Override
boolean equals(MyObj that){
    /* First check for null and all that stuff */
    ...
    return this.str.equals(that.getStr()) && this.num == that.getNum();
}