Честно говоря, я чувствую себя более комфортно с Альфред блог определения:
Объект : объекты реального мира имеют две основные характеристики: состояние и поведение. У человека есть состояние (имя, возраст) и поведение (бег, сон). Автомобиль имеет состояние (текущая скорость, текущая передача) и поведение (включение тормоза, переключение передач). Программные объекты концептуально похожи на объекты реального мира: они также состоят из состояния и связанного поведения. Объект сохраняет свое состояние в полях и раскрывает свое поведение с помощью методов.
Класс : это «шаблон» / «план», который используется для создания объектов. По сути, класс будет состоять из поля, статического поля, метода, статического метода и конструктора. Поле используется для хранения состояния класса (например: имя объекта Student). Метод используется для представления поведения класса (например, как объект ученика собирается встать). Конструктор используется для создания нового экземпляра класса.
Экземпляр : Экземпляр - это уникальная копия класса, представляющая объект. Когда создается новый экземпляр класса, JVM выделяет пространство памяти для этого экземпляра класса.
Учитывая следующий пример:
public class Person {
private int id;
private String name;
private int age;
public Person (int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (id != other.id)
return false;
return true;
}
public static void main(String[] args) {
//case 1
Person p1 = new Person(1, "Carlos", 20);
Person p2 = new Person(1, "Carlos", 20);
//case 2
Person p3 = new Person(2, "John", 15);
Person p4 = new Person(3, "Mary", 17);
}
}
Для случая 1 есть два экземпляра класса Person, но оба экземпляра представляют один и тот же объект.
Для случая 2 существует два экземпляра класса Person, но каждый экземпляр представляет отдельный объект.
Так что класс, объект и экземпляр - это разные вещи. Объект и экземпляр не являются синонимами, как предлагается в ответе, выбранном в качестве правильного ответа.