← Назад к вопросам

Что такое Object в Java?

1.6 Junior🔥 151 комментариев
#JVM и память

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Object в Java: фундамент объектной парадигмы

Object — это базовый класс в Java, от которого наследуют все остальные классы. Это фундамент объектной ориентированности и ключевой компонент иерархии типов Java. Если вы не указываете явно, что класс наследует другой класс, он автоматически наследует Object.

Основная роль Object

Object определён в пакете java.lang и предоставляет:

  • Типизацию: любой объект в Java является экземпляром Object или его подкласса
  • Стандартные методы: set/get, сравнение, сериализацию, многопоточность
  • Полиморфизм: возможность работать с любым объектом через ссылку типа Object

Ключевые методы Object

// equals() — сравнение по содержимому
open fun equals(other: Any?): Boolean

// hashCode() — хеш объекта для коллекций
open fun hashCode(): Int

// toString() — строковое представление
open fun toString(): String

// getClass() — получить Class объекта
fun getClass(): Class<*>

// clone() — поверхностная копия объекта
protected fun clone(): Any

// wait(), notify(), notifyAll() — синхронизация потоков

Переопределение методов

В реальном коде почти всегда переопределяют equals() и hashCode() вместе (контракт): если два объекта равны по equals(), их hashCode() должен быть одинаковым.

data class User(val id: Int, val name: String) {
    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (other !is User) return false
        return id == other.id && name == other.name
    }
    
    override fun hashCode(): Int {
        return id.hashCode() * 31 + name.hashCode()
    }
}

Практическое применение в Android

  • RecyclerView: при работе с List<T> нужны правильные equals() и hashCode() для диффинга
  • SharedPreferences/Room: сохранение данных требует сериализации через Parcelable/Serializable
  • Collections: HashMap, HashSet используют hashCode() для индексирования
  • Потокобезопасность: методы wait()/notify() для синхронизации доступа к ресурсам

Object — это не просто класс, это контракт, определяющий, как все Java-объекты должны себя вести в рантайме и в коллекциях.

Что такое Object в Java? | PrepBro