У меня есть два класса Person
и Teacher
. В классе Person
я проверяю, равны ли эти два объекта, используя метод compareTo. В классе Teacher
проблема, над которой я работаю, утверждает, что мне нужно переопределить метод equals
в Person. В этом методе equals
единственным способом, который он вернет, является то, что он равен как методу equals
в Person
, так и Teacher
. Мой вопрос заключается в том, когда я регистрирую Teacher
метод equals
, просто позвоню super.equals(other)
, чтобы проверить, равны ли два объекта родительскому классу или что-то еще мне нужно сделать?Java overriding parent равно метод
лицо:
public class Person implements Comparable<Person> {
public boolean equals(Object other) {
try {
return this.compareTo(other) == 0;
}catch(Exception e) {
return false;
}
}
}
Учитель
public class Teacher extends Person {
private String facultyID;
@Override
public boolean equals(Object other) {
boolean personEquals = super.equals(other);
try {
Teacher teach1 = (Teacher)other;
boolean idEquals = this.facultyID.equals(teach1.facultyID);
if(idEquals && personEquals)
return true;
return false;
}catch(Exception e) {
return false;
}
}
}
'this.compareTo (other)' не возвращает 'boolean'. Это должно читать 'this.compareTo (другое) == 0'. –
Будьте очень осторожны в отношении двух конкурирующих реализаций 'equals'. Это приводит к несимметричному равенству. – khelwood
@CostiCiudatu Спасибо за улов! Я отредактировал код, чтобы изменить это. – Andrew