Что такое класс, объект и экземпляр в Java?
Разница между классами, объектами и экземплярами
Ответ 1
Java (и любой другой язык программирования) моделируется с точки зрения типов и значений. На теоретическом уровне значение представляет собой представление некоторого количества информации, а тип представляет собой набор значений. Когда мы говорим, что значение X является экземпляром типа Y, мы просто говорим, что X является членом набора значений, который является типом Y.
Так что на самом деле означает термин "экземпляр": он описывает отношения, а не вещь.
Система типов языка программирования Java поддерживает два типа типов, примитивные типы и ссылочные типы. Типы ссылок далее делятся на классы и типы массивов. Объект Java является экземпляром ссылочного типа.
Объект является экземпляром класса или массивом. (JLS 4.3.1)
Это тип теоретического представления.
На практике большинство разработчиков Java трактуют слова "экземпляр" и "объект" как синонимы. (И это касается меня, тогда я пытаюсь что-то объяснить быстро.) И большинство разработчиков используют слово "значение", а не "экземпляр", чтобы ссылаться на экземпляр примитивного типа.
Ответ 2
A класс - это проект, который вы используете для создания объектов. Объект - это экземпляр класса - это конкретная вещь, которую вы создали с помощью определенного класса. Итак, "объект" и "экземпляр" - это одно и то же, но слово "экземпляр" указывает на отношение объекта к его классу.
Это легко понять, если вы посмотрите на пример. Например, предположим, что у вас есть класс House
. Ваш собственный дом является объектом и является экземпляром класса House
. Ваш родной дом - другой объект (другой экземпляр класса House
).
// Class House describes what a house is
class House {
// ...
}
// You can use class House to create objects (instances of class House)
House myHouse = new House();
House sistersHouse = new House();
Класс House
описывает концепцию того, что представляет собой дом, и существуют конкретные, конкретные дома, которые являются объектами и экземплярами класса House
.
Примечание. Это то же самое на Java, что и на всех объектно-ориентированных языках программирования.
Ответ 3
Класс является в основном определением и содержит объектный код. Объект - это экземпляр класса
например, если вы скажете
String word = new String();
класс - это класс String, который описывает слово object (instance).
Когда класс объявлен, память не выделяется, поэтому класс является просто шаблоном.
Когда объект класса объявлен, выделяется память.
Ответ 4
Мне нравится объяснение Джеспера с точки зрения непрофессионала
Импровизируя примеры из ответа Джеспера,
class House {
// blue print for House Objects
}
class Car {
// blue print for Instances of Class Car
}
House myHouse = new House();
Car myCar = new Car();
myHouse и myCar являются объектами
myHouse - это экземпляр House (связывает Object-myHouse с его Class-House). myCar - это экземпляр Car.
короче
"myHouse - это экземпляр класса House", что означает "myHouse - объект типа House".
Ответ 5
Класс - тип данных. Этот тип используется для создания объекта.
-
Экземпляр логичен, но объект - это физическое средство, которое занимает некоторую память.
-
Мы можем создать экземпляр для абстрактного класса, а также для интерфейса, но мы не можем создать файл объект для них.
-
Объект - это экземпляр класса и экземпляр, представляющий объект класса i.e.
-
Экземпляр ссылается на ссылку объекта.
-
Объект фактически указывает на адрес памяти этого экземпляра.
-
Вы не можете передать экземпляр над слоями, но вы можете передать объект по слоям
-
Вы не можете сохранить экземпляр, но вы можете сохранить объект
-
Один объект может иметь более одного экземпляра.
-
Экземпляры будут иметь как определение класса, так и определение объекта, где, как и в объекте, оно будет иметь только определение объекта.
Синтаксис объекта:
Classname var=new Classname();
Но, например, создание возвращает только указатель, ссылающийся на объект, синтаксис:
Classname varname;
Ответ 6
В java объекты появляются в куче памяти. Для этого требуется, чтобы ссылка была указана и использована в нашем приложении. Ссылка имеет расположение памяти объекта, с помощью которого мы можем использовать объекты в нашем приложении. Ссылка вкратце - это не что иное, как имя переменной, которая хранит адрес объекта, созданного экземпляром в ячейке памяти.
An instance
является общим термином для object
. FYI, object
- класс.
Например,
Class A{
}
A ref = new A();
Для приведенного выше фрагмента кода ref является ссылкой для объекта класса A, сгенерированного в куче.
Ответ 7
Если у вас есть программа, которая моделирует автомобили, у вас есть класс для представления автомобилей, поэтому в коде вы можете сказать:
Car someCar = new Car();
someCar теперь является экземпляром класса Car. Если программа используется в ремонтной мастерской, а someCar представляет ваш автомобиль в своей системе, то ваш автомобиль является объектом.
Итак, автомобиль - это класс, который может представлять любой автомобиль реального мира someCar - это пример класса Car и someCare представляет собой один объект реальной жизни (ваш автомобиль)
однако экземпляр и объект очень часто используются взаимозаменяемо, когда дело доходит до обсуждения кодирования
Ответ 8
Любые данные, хранящиеся в вашем компьютере, и процессы в самом базовом представлении представляют собой строку бит. То, как эти биты интерпретируются, осуществляется через типы данных. Типы данных могут быть примитивными или сложными. Примитивные типы данных - например, int или double. Они имеют определенную длину и конкретный способ интерпретации. В случае целого числа обычно используется первый бит для знака, остальные используются для значения.
Сложные типы данных могут быть комбинациями примитивных и других сложных типов данных и называются "Class" в Java.
Вы можете определить сложный тип данных PeopleName, состоящий из двух строк, называемых именем и фамилией. Каждая строка в Java является еще одним сложным типом данных. Строки в обратном порядке (возможно) реализованы с использованием примитивного типа данных char, для которого Java знает, сколько бит они берут для хранения и как их интерпретировать.
Когда вы создаете экземпляр типа данных, вы получаете объект, и ваши компьютеры резервируют для него некоторую память и запоминают его местоположение и имя этого экземпляра. Экземпляр PeopleName в памяти займет пространство двух переменных String плюс немного больше для бухгалтерии. Целое число занимает 32 бита в Java.
Сложные типы данных могут иметь назначенные им методы. Методы могут выполнять действия по своим аргументам или по экземпляру типа данных, вызываемого этим методом. Если у вас есть два экземпляра PeopleName, называемых p1 и p2, и вы вызываете метод p1.getFirstName(), он обычно возвращает первое имя первого лица, но не второго человека.
Ответ 9
Концепция классов и объектов заключается в инкапсуляции логики в единый блок программирования. Классы - это чертежи, из которых создаются объекты.
Вот пример класса, представляющего Car:
public class Car {
int currentSpeed;
String name;
public void accelerate() {
}
public void park() {
}
public void printCurrentSpeed() {
}
}
Вы можете создать экземпляры для объекта. Например:
Car audi = new Car();
Car toyota = new Car();
Я привел пример из этого урока
Ответ 10
Честно говоря, я чувствую себя более комфортно с определениями блога Альфреда:
Объект: объекты реального мира имеют две основные характеристики: состояние и поведение. У человека есть состояние (имя, возраст) и поведение (бег, сон). Автомобиль имеет состояние (текущая скорость, текущая передача) и поведение (включение тормоза, переключение передач). Программные объекты концептуально похожи на объекты реального мира: они также состоят из состояния и связанного поведения. Объект сохраняет свое состояние в полях и раскрывает свое поведение с помощью методов.
Класс: это "шаблон"/"план", который используется для создания объектов. По сути, класс будет состоять из поля, статического поля, метода, статического метода и конструктора. Поле используется для хранения состояния класса (например: имя объекта 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, но каждый экземпляр представляет отдельный объект.
Так что класс, объект и экземпляр - это разные вещи. Объект и экземпляр не являются синонимами, как предлагается в ответе, выбранном как правильный ответ.
Ответ 11
Класс
-
Он имеет логическое существование, то есть, когда оно создано, пространство памяти не выделяется.
-
Это набор объектов.
-
Класс может рассматриваться как проект для создания объектов.
-
Создается с использованием ключевого слова
-
Класс определяет методы и элементы данных, которые будут обладать объектами.
-
Объект
-
Он имеет физическое существование, т.е. пространство памяти выделяется при его создании.
-
Это экземпляр класса.
-
Объект - это уникальный объект, который содержит элементы данных и функции-члены вместе на языке ООП.
-
Создается с использованием нового ключевого слова
-
Объект определяет реализации методов и значений, которые будут принадлежать членам данных в классе.
-
Ответ 12
Класс: Структура
Объект: Физическое Проявление
Экземпляр: каждый объект, созданный из класса
Ссылка: адрес объекта
Ответ 13
Класс - это план, необходимый для создания объекта (= экземпляр).
Разница между объектом и экземпляром в том, что объект - это вещь, а экземпляр - это отношение.
Другими словами, instance описывает отношение объекта к классу, из которого был создан объект.
Ответ 14
Определение "Объект - это экземпляр класса", концептуально неверно, но верно в соответствии с реализацией. На самом деле объектно-ориентированные функции взяты из реальной жизни, для того, чтобы сосредоточить ум программиста от большего до меньшего. В реальной жизни классы предназначены для управления объектом. Например, у нас есть каста, религия, национальность и многое другое. Эти касты, религия, национальность являются классами и не имеют существования без людей. Но в реализации нет существования объектов без классов. Объект-Объект - это дискретный объект, имеющий некоторый четко определенный атрибут. Здесь дискретный означает нечто, что делает его уникальным от другого. Хорошо определенный атрибут имеет смысл в некотором контексте. Class - классификация объекта, имеющего некоторое общее поведение или объекты некоторого общего типа.
Ответ 15
В то время как вышеприведенные ответы верны, другим способом мышления о классах и объектах было бы использование примеров реального мира: класс с именем Animal может содержать такие объекты, как Cat, Dog или Fish. Объект с названием Библии будет иметь классную книгу и т.д. Классы являются общими, объекты специфичны. Этот мысленный пример помог мне, когда я изучал Java.
Ответ 16
Класс - это шаблон или тип. Объект является экземпляром класса.
Например:
public class Tweet {
}
Tweet newTweet = new Tweet();
Tweet - класс, а newTweet - объект класса.