Ответ
Если класс не объявлен с ключевым словом extends, он неявно наследует от класса java.lang.Object. Следовательно, метод hashCode() наследуется именно от Object.
Почему это важно:
- Все классы в Java являются потомками
Object. - Реализация
Object.hashCode()по умолчанию обычно возвращает целое число, основанное на внутреннем адресе объекта, но это не гарантировано спецификацией JVM и зависит от реализации.
Пример и best practice:
class MyClass { // Неявно: extends Object
private int id;
private String name;
// Наследует Object.hashCode()
}
public class Main {
public static void main(String[] args) {
MyClass obj = new MyClass();
System.out.println(obj.hashCode()); // Вызывается Object.hashCode()
}
}
Рекомендация: Для корректной работы с коллекциями, основанными на хэшах (HashMap, HashSet), и для соблюдения контракта между hashCode() и equals(), этот метод следует переопределять вместе с equals().