Какой класс является корнем иерархии всех классов в Java?

«Какой класс является корнем иерархии всех классов в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Корнем иерархии всех классов в Java является класс java.lang.Object. Каждый класс, явно или неявно, наследуется от Object. Это обеспечивает единый контракт и наличие базовых методов для всех объектов.

Ключевые методы класса Object:

  • equals(Object obj) — для логического сравнения объектов.
  • hashCode() — возвращает хеш-код объекта, должен быть согласован с equals().
  • toString() — возвращает строковое представление объекта.
  • getClass() — возвращает объект Class во время выполнения.
  • clone() — создает и возвращает копию объекта (требует реализации Cloneable).
  • finalize() — устаревший метод, вызываемый сборщиком мусора (не рекомендуется к использованию).
  • wait(), notify(), notifyAll() — методы для синхронизации потоков.

Пример:

// Любой объект можно привести к Object
Object obj = "Hello, World!";
System.out.println(obj.getClass()); // Вывод: class java.lang.String
System.out.println(obj.hashCode()); // Вывод: хеш-код строки

Почему это важно: Переопределяя методы equals() и hashCode(), вы корректно работаете с коллекциями (например, HashMap, HashSet). Метод toString() полезен для логирования и отладки.