Ответ
Класс Object — это корневой суперкласс для всех классов в Java. Он предоставляет базовые методы, которые определяют общее поведение для всех объектов.
Ключевые методы и их назначение:
equals(Object obj)— сравнивает объекты на равенство. Реализация по умолчанию (==) проверяет равенство ссылок.hashCode()— возвращает целочисленный хеш-код объекта. Критически важен для корректной работы коллекций, основанных на хеше (например,HashMap,HashSet). Контракт междуequals()иhashCode()требует, чтобы равные объекты имели одинаковый хеш-код.toString()— возвращает строковое представление объекта. По умолчанию выводит имя класса и хеш-код.getClass()— возвращает объектClass, представляющий тип объекта во время выполнения.clone()— создает и возвращает копию объекта. Требует реализации интерфейсаCloneable.finalize()— устаревший метод, вызываемый сборщиком мусора перед удалением объекта (не рекомендуется к использованию).wait(),notify(),notifyAll()— методы для синхронизации потоков.
Пример переопределения equals() и hashCode():
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age && Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Переопределяя эти методы, вы можете задать семантику равенства и эффективную работу в хеш-коллекциях для своих классов.