У чому різниця між Екземпляром та Об’єктом? Є різниця чи ні?
У чому різниця між Екземпляром та Об’єктом? Є різниця чи ні?
Відповіді:
Екземпляр - це об’єкт у пам’яті. В основному ви створюєте об'єкт і створюєте їх за допомогою примірника.
Ось хороший опис класів проти об’єктів проти екземплярів, він говорить про Java, але це стосується всіх ОО.
http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/
Екземпляр та Об’єкт - це об’єктно-орієнтоване програмування .
Для деяких мов програмування, таких як Java, C ++ та Smalltalk, важливо описувати та розуміти код. В інших мовах, що використовуються у структурованому програмуванні, цього поняття не існує.
Це виглядає із структурного програмування. Не існує реальної суттєвої різниці, яка повинна забирати занадто багато вашого часу. Можливо, є якась химерна мова, про яку деякі люди можуть зайняти багато місця, щоб писати, але в кінці кінців, що стосується кодера, розробника, програміста, архітектора, це екземпляр класу та Об'єкт означає одне і те ж і часто може використовуватися як взаємозамінні. У своїй кар’єрі я ніколи не зустрічав нікого, хто був би прискіпливим і витрачав півгодини, намагаючись вказати на відмінності, бо насправді таких немає. Час можна краще витратити на інші зусилля з розвитку.
ОНОВЛЕННЯ Що стосується Swift, то воліє Apple, яка винайшла Swift:
Екземпляр класу традиційно називається об'єктом. Однак класи та структури Swift набагато ближчі за функціональністю, ніж в інших мовах, і більша частина цього розділу описує функціональність, яка може застосовуватися до екземплярів класу або типу структури. Через це використовується більш загальний термін екземпляр.
Відмінне запитання.
Я поясню це найпростішим можливим способом: скажімо, у вас у кошику 5 яблук. Кожне з цих яблук є об'єктом типу Яблуко, який має деякі характеристики (тобто великий, круглий, росте на деревах).
З точки зору програмування, ви можете мати клас під назвою Apple, який має змінні величина: великий, форма: круглий, середовище проживання: росте на деревах. Щоб у вашій кошику було 5 яблук, вам потрібно створити екземпляр 5 яблук. Apple apple1, Apple apple2, Apple apple3 etc...
.
В якості альтернативи: об’єкти - це визначення чогось, екземпляри - це фізичні речі.
Це має сенс?
Екземпляр: екземпляр означає просто створення посилання (копії).
object: означає, що розташування пам'яті пов'язане з об'єктом (є суттю виконання класу) за допомогою нового оператора.
Простими словами, Instance посилається на копію об’єкта в певний час, тоді як об’єкт посилається на адресу пам’яті класу.
Скажімо, ви будуєте кілька стільців.
Діаграма, яка показує, як побудувати стілець і скласти його разом, відповідає класу програмного забезпечення.
Скажімо, ви побудували п’ять стільців за зразком на цій схемі. Подібним чином, ви можете побудувати п’ять об’єктів програм за шаблоном у класі.
Кожен стілець має унікальний номер, випалений внизу сидіння для ідентифікації кожного конкретного стільця. Стілець 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 є екземплярами об'єкта студента, два унікальні .
його можна також назвати довідковим .
в основному s1 та s2 є змінними, яким присвоюється об'єкт
Об'єкти та екземпляри в основному однакові; але є дуже мала різниця. Якщо Car
це клас, 3 Car
с - це 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 :
Примітка: Фраза "створення класу" означає те саме, що "створення об'єкта". Коли ви створюєте об'єкт, ви створюєте "екземпляр" класу, тому "створюєте екземпляр" класу.
кожен об'єкт, який називається екземпляром свого класу, але кожен екземпляр класу має своє значення для кожного атрибута, інстанції поділяє ім'я атрибута та операцію зі своїми інстанціями класу, але об'єкт містить неявну посилання на свій клас
Клас: Клас - це синій відбиток. Об’єкт: Це копія класу. Екземпляр: Це змінна, яка використовується для зберігання адреси пам'яті об'єкта.
Дуже базовий аналітичний приклад
Класний будинок -> План будинку. Але ви не можете жити на блакитному принті. Вам потрібен фізичний будинок, який є екземпляром класу для проживання. Тобто фактична адреса об’єкта - екземпляр. Екземпляри представляють об'єкти.
Як тільки ви створили екземпляр класу (використовуючи 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 баскетболу
скажімо баскетбол1 та баскетбол2. Потім ви запускаєте свою програму. Тепер у вас є 2 екземпляри об’єкта баскетбол.
Об'єкт відноситься до класу, а екземпляр - до об'єкта. Іншими словами, екземпляр - це копія об'єкта з певними значеннями в ньому.