我有一個名爲「worker」的子類擴展了「Person」類。我正嘗試從「Worker」的子類中的「Person」重寫equals()方法。任何人都可以解釋,如果我的嘗試在基本覆蓋方面是正確的?如何使用繼承覆蓋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'中的重寫完全沒有任何額外的,除了使用'getClass'而不是'instanceof',這可能會破壞對稱性。 ('aPerson.equals(anEmployee)'可以與'anEmployee.equals(aPerson)'有不同的結果。) – Radiodef