Я использую IntelliJ для автоматического создания функций equals
и hashCode
для следующих двух классов. Я нашел в методе Dog
class 'equals
, он делает
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Должны ли эти две строки быть опущены, поскольку они находятся в родительском классе? Я думал, что при вызове super.equals()
эти проверки будут происходить в родительском классе.
class Animal{
String eye;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Animal animal = (Animal) o;
return Objects.equals(eye, animal.eye);
}
@Override
public int hashCode() {
return Objects.hash(eye);
}
}
class Dog extends Animal{
String hair;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
Dog dog = (Dog) o;
return Objects.equals(hair, dog.hair);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), hair);
}
}