我有一个名为“worker”的子类,扩展了“Person”类。我正在尝试覆盖“Worker”子类中“Person”的 equals() 方法。谁能解释我的尝试在基本覆盖方面是否正确?
public class Person {
private String name;
public Person(String n) {
name = n;
}
public Person() {
this("");
}
public String getName() {
return name;
}
public String toString() {
return getName() + " ";
}
public boolean equals(Object rhs) {
if (!(rhs instanceof Person)) {
return false;
}
Person other = (Person) rhs;
return this.getName().equals(other.getName());
}
class Employee extends Person {
double salary;
public Employee(double b) {
salary = b;
}
Employee() {
salary = 150000;
}
public double getSalary() {
return salary;
}
@Override
public String toString() {
return super.toString();
}
// my attempt
@Override
public boolean equals(Object rhs) {
if (rhs == null) {
return false;
}
if (getClass() != rhs.getClass()) {
return false;
}
if (!super.equals(rhs))
return false;
else {
}
return false;
}
}
}
最佳答案
您已经正确地机械地处理了覆盖部分,但是您的 Employee 类的 equals 方法永远不会返回 true。
首先是因为:
if (!super.equals(rhs)) return false; else { }
即使 super.equals 的结果为真,你也总是会最终返回 false。
一旦你解决了这个问题,Person 的 equals 方法仍然有问题。如果传入 Worker 的实例,则该 equals 方法将始终返回 false。
可能还有其他的东西,但这两个是表演的阻碍。
关于java - 如何使用继承覆盖 equals() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35642638/