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

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

Ответ

Корневой класс: java.lang.Object — это неявный суперкласс для всех классов Java, кроме примитивных типов и массивов (хотя массивы тоже являются объектами).

Почему это важно: Наследование от Object обеспечивает единую базовую функциональность для всех объектов в системе.

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

Метод Назначение Переопределение
String toString() Возвращает строковое представление объекта. Часто (для логирования, отладки).
boolean equals(Object obj) Определяет логическое равенство объектов. Часто (вместе с hashCode()).
int hashCode() Возвращает хэш-код для поддержки хэш-коллекций (HashMap, HashSet). Обязательно при переопределении equals().
Class<?> getClass() Возвращает объект Class — метаинформацию о типе объекта во время выполнения (Runtime). Практически никогда.
protected Object clone() Создает и возвращает копию объекта. Иногда (требует реализации Cloneable).
protected void finalize() Вызывается сборщиком мусора перед удалением. Устарел с Java 9. Избегать.
void wait(), void notify(), void notifyAll() Базовые методы для межпоточной синхронизации. Редко (лучше использовать java.util.concurrent).

Пример неявного наследования:

public class MyClass { 
    // Компилятор автоматически добавляет: extends Object
}

// Проверка:
MyClass obj = new MyClass();
System.out.println(obj instanceof Object); // true
System.out.println(obj.getClass().getSuperclass()); // class java.lang.Object

Исключения: Примитивные типы (int, char и т.д.) не являются классами и не наследуют Object. Однако их классы-обертки (Integer, Character) — наследуют.