В чем разница между экземпляром и объектом? Есть разница или нет?
В чем разница между экземпляром и объектом? Есть разница или нет?
Ответы:
Экземпляр и объект взяты из объектно-ориентированного программирования .
Для некоторых языков программирования, таких как Java, C ++ и Smalltalk, важно описывать и понимать код. В других языках, используемых в структурированном программировании, этой концепции нет.
Это взгляд из Структурного программирования. Нет никакой реальной существенной разницы, которая должна занимать слишком много времени. Может быть какой-нибудь причудливый язык, на котором некоторые люди могут занять много места, но, в конце концов, с точки зрения кодера, разработчика, программиста, архитектора, экземпляр класса и объект означает одно и то же и часто может использоваться как синонимы . Я никогда в своей карьере не встречал никого, кто был бы разборчивым и потратил бы полчаса, пытаясь указать на различия, потому что на самом деле их нет. Время лучше потратить на другие разработки.
ОБНОВЛЕНИЕ Что касается Swift, то вот что предпочитает Apple, изобравшая Swift:
Экземпляр класса традиционно известен как объект. Однако классы и структуры Swift гораздо ближе по функциональности, чем в других языках, и большая часть этой главы описывает функциональность, которая может применяться к экземплярам класса или типа структуры. Из-за этого используется более общий термин «экземпляр».
Отличный вопрос.
Я объясню это как можно проще: допустим, у вас в корзине 5 яблок. Каждое из этих яблок является объектом типа Apple, который имеет некоторые характеристики (например, большой, круглый, растет на деревьях).
В терминах программирования у вас может быть класс под названием Apple, который имеет переменные size: big, shape: round, environment: растет на деревьях. Чтобы в вашей корзине было 5 яблок, вам нужно создать экземпляр 5 яблок. Apple apple1, Apple apple2, Apple apple3 etc...
.
В качестве альтернативы: объекты - это определения чего-либо, экземпляры - это физические вещи.
Имеет ли это смысл?
Экземпляр: экземпляр означает просто создание ссылки (копии).
object: означает, что место в памяти связано с объектом (является исполняемой сущностью класса) с помощью оператора new.
Проще говоря, Instance относится к копии объекта в определенное время, тогда как object относится к адресу памяти класса.
Допустим, вы строите стулья.
Схема, на которой показано, как построить стул и собрать его, соответствует классу программного обеспечения.
Допустим, вы построили пять стульев по схеме на этой схеме. Точно так же вы можете создать пять программных объектов в соответствии с шаблоном в классе.
У каждого стула есть уникальный номер, нанесенный на дно сиденья, чтобы идентифицировать каждый конкретный стул. Стул 3 - это один из примеров выкройки стула. Аналогично, ячейка 3 памяти может содержать один экземпляр программного шаблона.
Итак, экземпляр (стул 3) - это единственное уникальное, конкретное проявление рисунка стула.
Объект :
Это общий термин, в основном это пакет программного обеспечения, который имеет состояние (переменные) и поведение (методы).
Класс :
Чертеж (шаблон) для экземпляра объекта - это уникальный объект, например, вы создаете объект два раза, что означает, что вы создали два экземпляра
Приведу пример
Class student()
{
private string firstName;
public student(string fname)
{
firstName=fname;
}
Public string GetFirstName()
{
return firstName;
}
}
Пример объекта :
Студент s1 = новый студент («Мартин»); Студент s2 = новый студент («Кумар»);
S1, s2 имеют объект класса Student
Экземпляр :
s1 и s2 - экземпляры объекта student, они уникальны .
его также можно назвать ссылкой .
в основном s1 и s2 - это переменные, которым назначен объект
Объекты и экземпляры в основном одинаковы; но есть очень небольшая разница. Если Car
это класс, 3 Car
s - это 3 разных объекта. Все эти объекты являются экземплярами. Итак, эти 3 машины являются объектами из экземпляров Car
класса.
Но слово «экземпляр» может также означать «экземпляр структуры». Но объект только для классов.
Все объекты являются экземплярами. Не все экземпляры должны быть объектами. Экземпляры могут быть «экземплярами структуры» или «объектами». Надеюсь, это поможет вам понять разницу.
Объект - это конструкция, нечто статическое, обладающее определенными функциями и характеристиками, такими как свойства и методы, это может быть что угодно (строка, элемент управления пользователя и т. Д.)
Экземпляр - это уникальная копия этого объекта, которую вы можете использовать и делать с ней.
Представьте себе продукт, похожий на компьютер.
Рабочая станция xw6400 - это объект
ВАША рабочая станция xw6400 (или рабочая станция xw6400 ВАШЕЙ ЖЕНЫ) является экземпляром объекта рабочей станции xw6400
Этот ответ может показаться банальным, но беспокоиться о различиях между экземпляром и объектом - уже банальный город.
Я думаю, что лучше всего это изображено в javascript:
let obj= {"poo":1}
// "obj" is an object
стихи
Class Trash {
constructor(){this.poo = 1;}
}
let i = new Trash();
// "i" is an instance
Если мы увидим определение объекта и объекта-экземпляра -
Память, выделенная для члена класса во время выполнения, называется объектом, или объект является экземпляром класса.
Давайте посмотрим определение экземпляра -
Память, выделенная для Any во время выполнения, называется переменной экземпляра.
Теперь поймите значение любого выделения памяти во время выполнения, которое происходит в C также через Malloc, Calloc, Realloc, например:
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
Итак, здесь мы также выделяем выделение памяти времени выполнения, но здесь мы вызываем как экземпляр, поэтому t1 является экземпляром, здесь мы не можем сказать t1 как объект, поэтому каждый объект является экземпляром класса, но каждый экземпляр не является объектом.
Объект - экземпляр класса, который имеет собственное состояние и доступ ко всему поведению, определенному его классом.
Экземпляр - ссылка на область памяти для этого конкретного класса.
Не могу поверить, кроме одного парня, никто не использовал код, чтобы объяснить это, позвольте мне тоже попробовать!
// Design Class
class HumanClass {
var name:String
init(name:String) {
self.name = name
}
}
var humanClassObject1 = HumanClass(name: "Rehan")
Теперь левая сторона, то есть: «humanClassObject1» - это объект, а правая сторона, например: HumanClass (имя: «Rehan») - это экземпляр этого объекта.
var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.
Таким образом, экземпляр содержит определенные значения для этого объекта, а объекты содержат местоположение в памяти (во время выполнения).
Помните известное утверждение «ссылка на объект не установлена на экземпляр объекта», это означает, что у неинициализированных объектов нет экземпляра. В некоторых языках программирования, таких как swift, компилятор не позволит вам даже создать класс, у которого нет возможности инициализировать все его члены (переменные, например: имя, возраст и т. Д.), Но на некоторых языках вы можете сделать это:
// Design Class
class HumanClass {
var name:String // See we don't have any way to initialise name property.
}
И ошибка будет отображаться только во время выполнения, когда вы попытаетесь сделать что-то вроде этого:
var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.
Эта ошибка указывает на то, что конкретные значения (для переменных \ свойства) - это «ЭКЗЕМПЛЯР», как я пытался объяснить это выше! И объект, то есть: «myClass», содержит ячейку памяти (во время выполнения).
Когда объявляется переменная пользовательского типа (класса), создается только ссылка, которая называется объектом. На этом этапе этому объекту не выделяется память . Он действует как указатель (на место, где объект будет храниться в будущем). Этот процесс называется «Декларация».
Employee e; // e is an object
С другой стороны, когда переменная настраиваемого типа объявляется с использованием new
оператора, который выделяет память в куче этому объекту и возвращает ссылку на выделенную память. Этот объект, который теперь называется экземпляром . Этот процесс называется «создание экземпляра».
Employee e = new Employee(); // e is an instance
С другой стороны, в некоторых языках, таких как Java, объект эквивалентен экземпляру, как видно из строки, написанной в документации Oracle по Java :
Примечание. Фраза «создание экземпляра класса» означает то же самое, что и «создание объекта». Когда вы создаете объект, вы создаете «экземпляр» класса, следовательно, «инстанцируете» класс.
каждый объект считается экземпляром своего класса, но каждый экземпляр класса имеет свое собственное значение для каждого атрибута. intances разделяет имя атрибута и операцию со своими интансами класса, но объект содержит неявную ссылку на его в классе
Класс: Класс - это предварительный план. Объект: это копия класса. Экземпляр: это переменная, которая используется для хранения адреса памяти объекта.
Очень простой аналитический пример
Классный дом -> План дома. Но вы не можете жить на свету. Вам нужен физический дом, который является экземпляром класса, в котором вы будете жить. Т.е. фактический адрес объекта - это экземпляр. Экземпляры представляют собой объекты.
Как только вы создаете экземпляр класса (используя new), этот экземпляр становится объектом. Объект - это то, что может соответствовать принципам инкапсуляции, полиморфизма, абстракции объектно-ориентированного программирования и реальной вещи, с которой программа взаимодействует, чтобы использовать члены экземпляра, определенные в классе. Объект содержит члены экземпляра (нестатические члены).
Таким образом, экземпляр класса - это объект. Слово «экземпляр» используется, когда вы говорите о происхождении, из которого он родился, он будет более ясным, если вы скажете «экземпляр класса» по сравнению с «объектом класса» (хотя последнее можно использовать).
Также можно прочитать раздел «Внутренние классы» этого java-документа о вложенных классах - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
Java - это объектно-ориентированный язык программирования (ООП). Это означает, что все в Java, кроме примитивных типов, является объектом.
Теперь объекты Java похожи на объекты реального мира. Например, мы можем создать объект автомобиля в Java, который будет иметь такие свойства, как текущая скорость и цвет; и поведение вроде: ускоряйся и паркуйся.
Это Объект .
С другой стороны, экземпляр - это уникально инициализированная копия того объекта, который выглядит так Car car = new Car()
.
Ознакомьтесь с ним, чтобы узнать больше о классах и объектах Java.
Быстрый и простой ответ
Что касается разницы между an object
и an instance
, я не думаю, что существует какой-либо консенсус.
Мне кажется, что люди меняют это в значительной степени взаимозаменяемо в статьях, сообщениях в блогах, книгах или разговорах.
На мой взгляд, объект - это общая и живая сущность в памяти, заданная языком, на котором он используется. Точно так же, как Object
класс в Java
. Нас не очень заботит его тип или что-либо еще, что с ним связано, независимо от того, управляется ли он контейнером или нет.
An instance
- это object
но, связанное с типом, например this method accepts Foo instances
, или you can not put Animal instances in an instance of
a List of Vehicles
.
object
s, например, locks
связаны с ними, а не instance
s, тогда как instance
s имеют методы. objects
собираются мусором, а не instance
с.
Но, как я уже сказал, это только то, как я это вижу, и я не думаю, что есть какая-либо организация, к которой мы можем обратиться за стандартным определением между ними, и у всех в значительной степени будет свое немного другое понимание / определения (конечно, в определенных пределах) .
Объект - это общая вещь, например, возьмите линейную функцию в математике.
ax + b - это объект, а 3x + 2 - это экземпляр этого объекта
Объект <<< Экземпляр
Общие <<< Особые
Больше в этом нет ничего
Объект может быть классом, скажем, у вас есть класс под названием баскетбол.
но вы хотите иметь несколько баскетбольных мячей, поэтому в своем коде вы создаете более одного баскетбольного мяча
скажем, баскетбол1 и баскетбол2. Затем вы запускаете свое приложение. Теперь у вас есть 2 экземпляра объектного баскетбола.
Объект относится к классу, а экземпляр относится к объекту. Другими словами, экземпляр - это копия объекта с определенными значениями в нем.