Короткий ответ
Объект — это экземпляр класса: если класс это шаблон или чертёж, описывающий поля и методы, то объект — конкретная реализация шаблона с собственным набором значений полей. Например, класс Car описывает свойства машины, а объект — конкретную машину с моделью и цветом. Объект создаётся оператором new, также его можно получить рефлексией, клонированием или десериализацией.
Как это работает подробнее
Каждый объект занимает собственную область памяти в куче и имеет состояние, отличное от состояния других объектов того же класса. Важно различать объект и ссылку: переменная объектного типа хранит не сам объект, а ссылку — «адрес», по которому объект лежит в памяти. Ссылку можно переназначить на другой объект или в null, а на один объект могут одновременно указывать несколько ссылок.
- Класс — шаблон: какие поля и методы есть у сущности.
- Объект — экземпляр с конкретными значениями полей; размещается в куче.
- Ссылка — переменная, указывающая на объект; может быть переназначена или равна null.
- java.lang.Object — все объекты наследуют его и получают методы toString(), equals(), hashCode().
Пример кода
class Car {
String model;
String color;
Car(String model, String color) {
this.model = model;
this.color = color;
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car("Toyota", "красный"); // объект в куче
Car sameCar = myCar; // вторая ссылка на тот же объект
System.out.println(myCar == sameCar); // true: одна ссылка
}
}Что использовать на практике
- Создавай объекты через new с понятным конструктором или через фабричные методы.
- Помни, что переменная — это ссылка: копируя её, ты не копируешь сам объект.