Back to questions
Junior — Middle
58
Будет ли метод equals возвращать true при сравнении объектов разных классов, если их поля совпадают?
Answer from AI
sobes.tech AI
Метод equals в Java по умолчанию (в классе Object) сравнивает ссылки на объекты, то есть возвращает true только если это один и тот же объект.
Если метод equals переопределён, то поведение зависит от реализации. Обычно в реализации equals проверяют:
- Является ли объект того же класса (или совместимого типа).
- Совпадают ли значения ключевых полей.
Если объекты разных классов, то обычно equals возвращает false, даже если поля совпадают, чтобы сохранить симметрию и консистентность.
Пример:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && Objects.equals(field2, other.field2);
}
Здесь getClass() != obj.getClass() гарантирует, что объекты разных классов не считаются равными, даже если поля совпадают.