Jaka jest różnica między instancją a obiektem?


95

Jaka jest różnica między instancją a obiektem? Czy jest różnica, czy nie?


10
Być może można wywnioskować z dobrze znanego komunikatu o błędzie „Odwołanie do obiektu nie jest ustawione na instancję obiektu ”. : ->
herzmeister

Ze specyfikacji JVM: „Obiekt jest albo dynamicznie alokowaną instancją klasy, albo tablicą.” Docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html
yfklon,

StackOverflow Właśnie podano krótki opis na temat różnicy między obiektem a przykład mam nadzieję, że to pomaga
Pushkarraj Pujari

1
Obiekt jest instancją klasy. To wszystko.
Markiz Lorne

Odpowiedzi:


59

Instancja i obiekt pochodzą z programowania obiektowego .

W przypadku niektórych języków programowania, takich jak Java, C ++ i Smalltalk, ważne jest, aby opisać i zrozumieć kod. W innych językach używanych w programowaniu strukturalnym ta koncepcja nie istnieje.

To jest widok z programowania strukturalnego. Nie ma naprawdę znaczącej różnicy, która powinna pochłaniać zbyt dużo czasu. Może istnieć jakiś wymyślny język, o którym niektórzy ludzie mogą pisać dużo miejsca, ale na koniec dnia, jeśli chodzi o kodera, programistę, programistę, architekta, przykład klasy i obiekt oznacza to samo i często może być używany zamiennie . Nigdy w swojej karierze nie spotkałem nikogo, kto byłby wybredny i spędziłby pół godziny próbując wskazać różnice, ponieważ tak naprawdę nie ma. Czas można lepiej poświęcić na inne działania rozwojowe.

AKTUALIZACJA Jeśli chodzi o Swift, Apple, który wynalazł Swift preferuje:

Instancja klasy jest tradycyjnie nazywana obiektem. Jednak klasy i struktury Swift mają znacznie bliższą funkcjonalność niż inne języki, a znaczna część tego rozdziału opisuje funkcje, które można zastosować do instancji klasy lub typu struktury. Z tego powodu używany jest bardziej ogólny termin instancja.


19

Świetne pytanie.

Wyjaśnię to w najprostszy możliwy sposób: powiedzmy, że masz w koszyku 5 jabłek. Każde z tych jabłek jest przedmiotem typu Jabłko, które ma pewne cechy (np. Duże, okrągłe, rośnie na drzewach).

W kategoriach programowania możesz mieć klasę o nazwie Apple, która ma zmienne rozmiar: duży, kształt: okrągły, siedlisko: rośnie na drzewach. Aby mieć 5 jabłek w koszyku, musisz utworzyć instancję 5 jabłek. Apple apple1, Apple apple2, Apple apple3 etc....

Alternatywnie: przedmioty są definicjami czegoś, instancje to rzeczy fizyczne.

Czy to ma sens?


63
Tak nie jest. :) „Obiekty to definicje czegoś” To, co nazywacie obiektami, to klasy.
T-Gergely,

11

Instancja: instancja oznacza po prostu utworzenie odnośnika (kopii).

obiekt: oznacza, że ​​lokalizacja pamięci jest skojarzona z obiektem (jest jednostką wykonawczą klasy) przy użyciu operatora new.

W prostych słowach Instancja odnosi się do kopii obiektu w określonym czasie, podczas gdy obiekt odnosi się do adresu pamięci klasy.


1
stwierdzenie, że instancja jest odniesieniem do obiektu, naprawdę wyjaśniło mi sprawę.
John C

4
@JohnC Nie powinno, bo nie jest poprawne. Obiekt jest instancją klasy. To wszystko.
Markiz Lorne

8

Powiedzmy, że budujesz krzesła.

Schemat, który pokazuje, jak zbudować krzesło i złożyć je razem, odpowiada klasie oprogramowania.

Powiedzmy, że budujesz pięć krzeseł według wzoru na tym schemacie. Podobnie, możesz skonstruować pięć obiektów oprogramowania zgodnie ze wzorcem w klasie.

Każde krzesło ma niepowtarzalny numer wypalony na spodzie siedzenia, aby zidentyfikować każde konkretne krzesło. Krzesło 3 jest jednym z przykładów wzoru krzesła. Podobnie, lokalizacja pamięci 3 może zawierać jedną instancję wzoru oprogramowania.

Tak więc instancja (krzesło 3) jest pojedynczą, unikalną, specyficzną manifestacją wzoru krzesła.


3
Obiekt jest instancją klasy. Instancja nie jest instancją obiektu. Odpowiedź jest bez znaczenia.
Markiz Lorne

1
Wow, po dziewięciu latach ktoś w końcu wskazał na błąd w moim wyjaśnieniu. Dzięki! Lepiej teraz?
Brian Showalter

7

Przedmiot :

Jest to ogólny termin w zasadzie jest to pakiet oprogramowania, który ma stan (zmienne) i zachowanie (metody)

Klasa :

Niebieski wydruk (szablon) dla instancji obiektu - jest to unikalny obiekt, na przykład tworzymy obiekt dwa razy, co to znaczy, że utworzyliście dwie instancje

Podam przykład

Class student()
{
   private string firstName;
  public student(string fname)
  {
    firstName=fname;
  }
  Public string GetFirstName()
  {
    return firstName;
  }
}

Przykład obiektu :

Student s1 = nowy student („Martin”); Student s2 = nowy student („Kumar”);

S1, s2 mają obiekt klasy Student

Instancja :

s1 i s2 są instancjami ucznia obiektu, oba są unikalne .

można go również nazwać jako odniesienie .

w zasadzie s1 i s2 są zmiennymi, którym przypisano obiekt


1
Obiekt jest instancją klasy.
Markiz Lorne

7

Obiekty i instancje są w większości takie same; ale jest bardzo mała różnica. Jeśli Carjest to klasa, 3 Cars to 3 różne obiekty. Wszystkie te obiekty są instancjami. Więc te 3 samochody to obiekty z instancji tej Carklasy.

Ale słowo „instancja” może również oznaczać „instancję struktury”. Ale obiekt jest tylko dla klas.

Wszystkie obiekty są instancjami. Nie wszystkie instancje muszą być obiektami. Instancje mogą być „instancjami konstrukcji” lub „obiektami”. Mam nadzieję, że to wyjaśnia ci różnicę.


3

Obiekt to konstrukcja, coś statycznego, które ma pewne cechy i cechy, takie jak właściwości i metody, może to być wszystko (ciąg znaków, kontrola użytkownika itp.)

Instancja to unikatowa kopia tego obiektu, której można używać i z którą można wykonywać różne czynności.

Wyobraź sobie produkt, taki jak komputer.

Stacja robocza xw6400 jest obiektem

TWOJA stacja robocza xw6400 (lub stacja robocza xw6400 TWOJEJ ŻONY) jest instancją obiektu stacji roboczej xw6400


1
Twój pierwszy i drugi akapit opisują klasy, a nie obiekty.
Markiz Lorne

2

Ta odpowiedź może wydawać się banalna, ale martwienie się o różnice między instancją a obiektem to już banalne miasto.

Myślę, że najlepiej to przedstawia javascript:

let obj= {"poo":1} 
// "obj" is an object

wersety

Class Trash {
    constructor(){this.poo = 1;}
}

let i = new Trash();
// "i" is an instance

1

Instancja to specyficzna reprezentacja obiektu. Obiekt to rzecz ogólna, podczas gdy instancja to pojedynczy obiekt utworzony w pamięci. Zazwyczaj instancja będzie miała przypisane wartości do swoich właściwości, co odróżnia ją od innych instancji tego typu obiektów.


1

Jeśli zobaczymy definicję obiektu i instancji -

Pamięć przydzielona członkowi klasy w czasie wykonywania jest nazywana obiektem lub obiekt jest instancją klasy.

Zobaczmy definicję instancji -

Pamięć przydzielona dla dowolnego w czasie wykonywania jest wywoływana jako zmienna instancji.

Teraz zrozum znaczenie alokacji pamięci w dowolnym czasie wykonywania w języku C również za pośrednictwem Malloc, Calloc, Realloc, takich jak:

struct p
{

}
p *t1
t1=(p) malloc(sizeof(p))

Więc tutaj również przydzielamy alokację pamięci w czasie wykonywania, ale tutaj wywołujemy jako instancję, więc t1 jest tutaj instancją, nie możemy powiedzieć t1 jako obiektu, więc każdy obiekt jest instancją klasy, ale każda instancja nie jest obiektem.


Gdzieś tu czai się poprawna odpowiedź, ale język wymaga uporządkowania i uproszczenia.
Markiz Lorne

1

Obiekt - instancja klasy, która ma swój własny stan i dostęp do wszystkich zachowań zdefiniowanych przez tę klasę.

Instancja - odwołanie do obszaru pamięci dla tej konkretnej klasy.


1

Nie mogę uwierzyć, z wyjątkiem jednego faceta, którego nikt nie użył kodu, aby to wyjaśnić, pozwól mi też spróbować!

// Design Class
class HumanClass {
    var name:String
    init(name:String) {
        self.name = name
    }
}

var humanClassObject1 = HumanClass(name: "Rehan") 

Teraz lewa strona, czyli: „humanClassObject1” to obiekt, a prawa strona, czyli: HumanClass (nazwa: „Rehan”) to instancja tego obiektu.

var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.

Zasadniczo wystąpienie zawiera określone wartości dla tego obiektu, a obiekty zawierają lokalizację pamięci (w czasie wykonywania).

Pamiętaj o słynnym stwierdzeniu „odwołanie do obiektu nie jest ustawione na instancję obiektu”, co oznacza, że ​​niezainicjalizowane obiekty nie mają żadnej instancji. W niektórych językach programowania, takich jak swift, kompilator nie pozwoli ci nawet zaprojektować klasy, która nie ma żadnego sposobu na zainicjowanie wszystkich jej członków (zmienna, np .: imię, wiek itp.), Ale w niektórych językach możesz to zrobić:

// Design Class
class HumanClass {
    var name:String // See we don't have any way to initialise name property.
}

A błąd będzie wyświetlany tylko w czasie wykonywania, gdy spróbujesz zrobić coś takiego:

var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.

Ten błąd wskazuje, że określone wartości (dla zmiennych \ właściwość) to „INSTANCJA”, jak próbowałem to wyjaśnić powyżej! A obiekt, np. „MyClass”, zawiera lokalizację pamięci (w czasie wykonywania).


1

W przypadku zadeklarowania zmiennej typu niestandardowego (klasy) tworzone jest tylko odniesienie, które jest nazywane obiektem. Na tym etapie żadna pamięć nie jest przydzielana do tego obiektu . Działa tylko jako wskaźnik (do lokalizacji, w której obiekt będzie przechowywany w przyszłości). Ten proces nazywa się „Deklaracją”.

Employee e; // e is an object

Z drugiej strony, gdy zmienna typu niestandardowego jest zadeklarowana przy użyciu newoperatora, który przydziela pamięć w stercie do tego obiektu i zwraca odwołanie do przydzielonej pamięci. Ten obiekt, który jest obecnie określany jako instancja . Ten proces nazywa się „instancją”.

Employee e = new Employee(); // e is an instance

Z drugiej strony, w niektórych językach, takich jak Java, obiekt jest odpowiednikiem instancji, jak wynika z wiersza zapisanego w dokumentacji Oracle w języku Java :

Uwaga: wyrażenie „tworzenie instancji klasy” oznacza to samo, co „tworzenie obiektu”. Kiedy tworzysz obiekt, tworzysz „instancję” klasy, a zatem „tworzysz instancję” klasy.


0

każdy obiekt, o którym mówi się, że jest instancją swojej klasy, ale każda instancja klasy ma swoją własną wartość dla każdego atrybutu intances mają wspólną nazwę atrybutu i działanie z ich intencjami klasy, ale obiekt zawiera niejawne odniesienie do jego klasy


0

Klasa: Klasa to niebieski druk. Przedmiot: jest to kopia klasy. Instancja: jest to zmienna, która jest używana do przechowywania adresu pamięci obiektu.

Bardzo podstawowy przykład analityczny

Class House -> Plan domu. Ale nie możesz żyć w niebieskim druku. Potrzebujesz fizycznego domu, który jest instancją klasy do zamieszkania, tj. Rzeczywisty adres obiektu to instancja. Instancje reprezentują obiekty.


Instancja odnosi się do obiektu, a nie do zmiennej.
Markiz Lorne

0

Gdy utworzysz instancję klasy (używając new), ta utworzona rzecz staje się obiektem. Obiekt to coś, co może być zgodne z hermetyzacją, polimorfizmem, zasadami abstrakcji programowania zorientowanego obiektowo oraz rzeczywistą rzeczą, z którą program oddziałuje, aby wykorzystać elementy instancji zdefiniowane w klasie. Obiekt zawiera elementy instancji (elementy niestatyczne).

Zatem instancja klasy jest obiektem. Słowo „instancja” jest używane, gdy odnosisz się do pochodzenia, z którego się narodził, jaśniej jest powiedzieć „instancja klasy” w porównaniu z „przedmiotem klasy” (chociaż można do tego użyć tego ostatniego).

Może również czytać sekcję „Klasy wewnętrzne” tego dokumentu Java na temat klas zagnieżdżonych - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


0

Java to zorientowany obiektowo język programowania (OOP). Oznacza to, że wszystko w Javie, z wyjątkiem typów pierwotnych, jest obiektem.

Teraz obiekty Java są podobne do obiektów świata rzeczywistego. Na przykład możemy stworzyć obiekt samochodu w Javie, który będzie miał takie właściwości jak aktualna prędkość i kolor; i zachowania takie jak: przyspieszenie i parkowanie.

To jest obiekt .

wprowadź opis obrazu tutaj

Instancja , z drugiej strony, jest unikatową zainicjowaną kopią tego obiektu, która wygląda jak Car car = new Car().

Sprawdź, aby dowiedzieć się więcej o klasach i obiektach Java


Obiekt jest instancją klasy.
Markiz Lorne

0

Szybka i prosta odpowiedź

  • Klasa : specyfikacja, plan obiektu
  • Przedmiot : fizyczna obecność klasy w pamięci
  • Instancja : unikalna kopia obiektu (ta sama struktura, różne dane)

-1

Jeśli chodzi o różnicę między an objecti an instance, nie sądzę, aby istniał jakikolwiek konsensus.

Wydaje mi się, że ludzie zmieniają to prawie zamiennie, w gazetach, postach na blogach, książkach lub rozmowach.

Jeśli chodzi o mnie, to widzę, że obiekt jest ogólnym i żywym bytem w pamięci, określonym przez język, w którym jest używany. Podobnie jak Objectklasa Java. Nie przejmujemy się zbytnio jego rodzajem ani czymkolwiek innym z nim związanym, czy jest zarządzany przez kontener, czy nie.

An instancejest objectale skojarzony z typem, jak w this method accepts Foo instances, lub you can not put Animal instances in an instance of a List of Vehicles.

objects na przykład ma locksskojarzone z nimi, instancea nie s, podczas gdy instances mają metody. objectssą zbierane śmieci, instancea nie s.

Ale jak powiedziałem, widzę to tylko tak, jak to widzę i nie sądzę, że istnieje żadna organizacja, do której moglibyśmy się odwołać w celu ustalenia między nimi standardowej definicji, a każdy będzie miał nieco inne rozumienie / definicje (oczywiście w pewnych granicach) .


-1

Obiekt jest rzeczą ogólną, na przykład przyjmuje funkcję liniową w matematyce

ax + b to obiekt, a 3x + 2 to instancja tego obiektu

Obiekt <<< Instancja

Ogólne <<< Konkretne

Nie ma w tym nic więcej


-2

Obiekt może być klasą, powiedzmy, że masz klasę zwaną koszykówką.

ale chcesz mieć wiele piłek do koszykówki, więc w swoim kodzie tworzysz więcej niż jedną piłkę do koszykówki

powiedz basketball1 i basketball2. Następnie uruchamiasz swoją aplikację. Masz teraz 2 wystąpienia obiektu koszykówka.


To oznaczałoby, że obiekt jest instancją konstruktora klasy?
parada uliczna

myśl o obiekcie jak o planie. powiedzmy, że mamy plan koszykówki, czyli klasę. kiedy piłka do koszykówki została utworzona i sprawiła, że ​​teraz istnieje, oznaczałoby to, że mamy 1 wystąpienie obiektu koszykówka. jeśli zbudowaliśmy kolejną piłkę do koszykówki z obiektu (plan). mamy teraz 2 przypadki koszykówki. Zawsze jest tylko 1 obiekt, ale możemy utworzyć wiele instancji tego obiektu.
Darxval

@Darxval to co to jest klasa
Chyanit Singh

-3

Obiekt odnosi się do klasy, a instancja do obiektu, innymi słowy instancja jest kopią obiektu zawierającą określone wartości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.