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

Что такое объект в Java?

1.0 Junior🔥 221 комментариев
#Основы Java

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

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

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

Объект в Java

Объект — это базовый строительный блок объектно-ориентированного программирования в Java. Это экземпляр класса, который содержит состояние (данные) и поведение (методы).

Определение Объекта

Объект в Java — это:

  • Экземпляр класса: создаётся при помощи оператора new
  • Сущность в памяти: хранится в heap memory
  • Совокупность данных и методов: инкапсулирует состояние и поведение
  • Ссылка: переменная хранит ссылку на объект, а не сам объект

Создание Объекта

class Person {
    String name;
    int age;
    
    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    void greet() {
        System.out.println("Hi, Im " + name);
    }
}

// Создание объекта
Person person = new Person("Alice", 30);
person.greet();  // Hi, Im Alice

Характеристики Объекта

1. Идентичность (Identity) Каждый объект имеет уникальный идентификатор, возвращаемый методом hashCode():

Person p1 = new Person("Bob", 25);
Person p2 = new Person("Bob", 25);

System.out.println(p1 == p2);  // false (разные объекты)
System.out.println(p1.equals(p2));  // зависит от реализации equals
System.out.println(System.identityHashCode(p1));  // уникальный ID

2. Состояние (State) Получается из значений полей объекта:

class Car {
    String color;      // состояние
    String brand;      // состояние
    int speed;         // состояние
}

3. Поведение (Behavior) Определяется методами объекта:

class Car {
    void accelerate() { speed += 10; }
    void brake() { speed -= 10; }
    void honk() { System.out.println("Beep!"); }
}

Жизненный Цикл Объекта

1. Создание (Creation)

Person p = new Person("Charlie", 35);
// 1. Память выделяется в heap
// 2. Переменные инициализируются значениями по умолчанию
// 3. Вызывается конструктор
// 4. Ссылка присваивается переменной p

2. Использование (Usage)

p.name = "Charles";
p.greet();

3. Удаление (Deletion)

p = null;  // ссылка удалена
// Объект становится доступным для Garbage Collector

Ссылки на Объекты

Важное различие: переменная хранит ссылку, не сам объект:

Person p1 = new Person("Dave", 40);
Person p2 = p1;  // p2 указывает на тот же объект

p2.name = "David";
System.out.println(p1.name);  // David (изменился через p2)

Копирование Объектов

Поверхностное копирование (Shallow Copy)

Person original = new Person("Eve", 28);
Person copy = original;  // обе ссылки на один объект

Глубокое копирование (Deep Copy)

Person deepCopy = new Person(original.name, original.age);
// Или через Cloneable

Сравнение Объектов

Person p1 = new Person("Frank", 45);
Person p2 = new Person("Frank", 45);

// Сравнение ссылок (идентичность)
p1 == p2;  // false

// Сравнение содержимого (равенство)
p1.equals(p2);  // зависит от переопределения equals()

Класс Object

Все объекты в Java наследуют методы из java.lang.Object:

public class Person extends Object {
    @Override
    public String toString() { return name + ", " + age; }
    
    @Override
    public boolean equals(Object obj) { 
        if (!(obj instanceof Person)) return false;
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }
    
    @Override
    public int hashCode() { return Objects.hash(name, age); }
}

Итоговое Резюме

Объект — это конкретный экземпляр класса, который существует в памяти компьютера и обладает собственным состоянием и поведением. Переменная содержит ссылку на объект, позволяя нам взаимодействовать с ним через методы и поля.