Was ist der Unterschied zwischen einer Instanz und einem Objekt? Gibt es einen Unterschied oder nicht?
Was ist der Unterschied zwischen einer Instanz und einem Objekt? Gibt es einen Unterschied oder nicht?
Antworten:
Eine Instanz ist ein Objekt im Speicher. Grundsätzlich erstellen Sie Objekte und instanziieren sie, wenn Sie sie verwenden.
Hier ist eine nette Zusammenfassung über Klassen gegen Objekte gegen Instanzen, er spricht Java, aber es gilt für alle OO.
http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/
Die Instanz und das Objekt stammen aus der objektorientierten Programmierung .
Für einige Programmiersprachen wie Java, C ++ und Smalltalk ist es wichtig, Code zu beschreiben und zu verstehen. In anderen Sprachen, die in der strukturierten Programmierung verwendet werden, existiert dieses Konzept nicht.
Dies ist eine Ansicht aus der Strukturprogrammierung. Es gibt keinen wirklich signifikanten Unterschied, der zu viel Zeit in Anspruch nehmen sollte. Es mag eine ausgefallene Sprache geben, über die manche Leute viel Platz zum Schreiben einnehmen, aber am Ende des Tages, was einen Programmierer, Entwickler, Programmierer, Architekten betrifft, eine Instanz einer Klasse und eine Objekt bedeuten dasselbe und können oft synonym verwendet werden. Ich habe in meiner Karriere noch nie jemanden getroffen, der wählerisch wäre und eine halbe Stunde damit verbringen würde, auf die Unterschiede hinzuweisen, weil es wirklich keine gibt. Zeit kann besser für andere Entwicklungsbemühungen aufgewendet werden.
UPDATE In Bezug auf Swift bevorzugt Apple, der Swift erfunden hat, Folgendes:
Eine Instanz einer Klasse wird traditionell als Objekt bezeichnet. Swift-Klassen und -Strukturen sind jedoch in ihrer Funktionalität viel näher als in anderen Sprachen, und ein Großteil dieses Kapitels beschreibt Funktionen, die für Instanzen einer Klasse oder eines Strukturtyps gelten können. Aus diesem Grund wird der allgemeinere Begriff Instanz verwendet.
Ausgezeichnete Frage.
Ich erkläre es so einfach wie möglich: Angenommen, Sie haben 5 Äpfel in Ihrem Korb. Jeder dieser Äpfel ist ein Objekt vom Typ Apple, das einige Eigenschaften aufweist (dh groß, rund, wächst auf Bäumen).
In Bezug auf die Programmierung können Sie eine Klasse namens Apple haben, deren Variablen Größe: groß, Form: rund, Lebensraum: wächst auf Bäumen. Um 5 Äpfel in Ihrem Warenkorb zu haben, müssen Sie 5 Äpfel instanziieren . Apple apple1, Apple apple2, Apple apple3 etc...
.
Alternativ: Objekte sind die Definitionen von etwas, Instanzen sind die physischen Dinge.
Macht das Sinn?
Instanz: Instanz bedeutet nur das Erstellen einer Referenz (Kopie).
Objekt: bedeutet, dass der Speicherort dem Objekt zugeordnet ist (eine Laufzeitentität der Klasse ist), indem der neue Operator verwendet wird.
In einfachen Worten bezieht sich Instanz auf die Kopie des Objekts zu einem bestimmten Zeitpunkt, während sich Objekt auf die Speicheradresse der Klasse bezieht.
Nehmen wir an, Sie bauen Stühle.
Das Diagramm, das zeigt, wie ein Stuhl gebaut und zusammengesetzt wird, entspricht einer Softwareklasse.
Angenommen, Sie bauen fünf Stühle nach dem Muster in diesem Diagramm. Ebenso können Sie fünf Softwareobjekte gemäß dem Muster in einer Klasse erstellen.
Jeder Stuhl hat eine eindeutige Nummer, die in die Unterseite des Sitzes eingebrannt ist, um jeden bestimmten Stuhl zu identifizieren. Stuhl 3 ist eine Instanz eines Stuhlmusters. Ebenso kann Speicherplatz 3 eine Instanz eines Softwaremusters enthalten.
Eine Instanz (Stuhl 3) ist also eine einzelne, spezifische Manifestation eines Stuhlmusters.
Objekt :
Es ist ein allgemeiner Begriff, im Grunde ist es ein Softwarepaket, das Status (Variablen) und Verhalten (Methoden) hat.
Klasse :
Eine Blaupause (Vorlage) für eine Objektinstanz - es ist eine einzigartige Objektsache, zum Beispiel, dass Sie ein Objekt zweimal erstellen. Das bedeutet, dass Sie zwei Instanzen erstellt haben
Lassen Sie mich ein Beispiel geben
Class student()
{
private string firstName;
public student(string fname)
{
firstName=fname;
}
Public string GetFirstName()
{
return firstName;
}
}
Objektbeispiel :
Student s1 = neuer Student ("Martin"); Student s2 = neuer Student ("Kumar");
Die s1, s2 haben Objekte der Klasse Student
Instanz :
s1 und s2 sind Instanzen von Objektschülern, die beiden sind eindeutig .
es kann auch als Referenz bezeichnet werden .
Grundsätzlich sind s1 und s2 Variablen, denen ein Objekt zugewiesen ist
Objekte und Instanzen sind meistens gleich; aber es gibt einen sehr kleinen Unterschied. Wenn Car
es sich um eine Klasse handelt, sind 3 Car
s 3 verschiedene Objekte. Alle diese Objekte sind Instanzen. Diese 3 Autos sind also Objekte aus Instanzen der Car
Klasse.
Das Wort "Instanz" kann aber auch "Strukturinstanz" bedeuten. Objekt ist aber nur für Klassen.
Alle Objekte sind Instanzen. Nicht alle Instanzen müssen Objekte sein. Instanzen können "Strukturinstanzen" oder "Objekte" sein. Ich hoffe, das macht Ihnen den Unterschied klar.
Ein Objekt ist ein Konstrukt, etwas Statisches, das bestimmte Merkmale und Eigenschaften wie Eigenschaften und Methoden aufweist. Es kann alles sein (eine Zeichenfolge, eine Benutzersteuerung usw.).
Eine Instanz ist eine eindeutige Kopie dieses Objekts, mit der Sie Dinge ausführen können.
Stellen Sie sich ein Produkt wie einen Computer vor.
Die xw6400-Workstation ist ein Objekt
IHRE xw6400-Workstation (oder die xw6400-Workstation IHRER FRAU) ist eine Instanz des xw6400-Workstation-Objekts
Diese Antwort kann als banal angesehen werden, aber die Sorge um die Unterschiede zwischen einer Instanz und einem Objekt ist bereits eine banale Stadt.
Ich denke, es ist am besten in Javascript dargestellt:
let obj= {"poo":1}
// "obj" is an object
Verse
Class Trash {
constructor(){this.poo = 1;}
}
let i = new Trash();
// "i" is an instance
Eine Instanz ist eine bestimmte Darstellung eines Objekts. Ein Objekt ist eine generische Sache, während eine Instanz ein einzelnes Objekt ist, das im Speicher erstellt wurde. Normalerweise werden einer Instanz Werte zugewiesen, die sie von anderen Instanzen des Objekttyps unterscheiden.
Wenn wir die Definition von Objekt und Instanzobjekt sehen -
Der zur Laufzeit für das Klassenmitglied zugewiesene Speicher wird als Objekt bezeichnet, oder Objekt ist die Instanz der Klasse.
Lassen Sie uns die Definition der Instanz sehen -
Der zur Laufzeit für Any zugewiesene Speicher wird als Instanzvariable aufgerufen.
Verstehen Sie nun die Bedeutung jeder Laufzeitspeicherzuweisung, die in C auch über Malloc, Calloc, Realloc erfolgt, wie z.
struct p
{
}
p *t1
t1=(p) malloc(sizeof(p))
Auch hier weisen wir die Laufzeitspeicherzuweisung zu, aber hier rufen wir als Instanz auf, sodass t1 eine Instanz ist. Hier können wir t1 nicht als Objekt bezeichnen. Jedes Objekt ist die Instanz der Klasse, aber jede Instanz ist kein Objekt.
Objekt - Eine Instanz einer Klasse, die über einen eigenen Status und Zugriff auf das gesamte von ihrer Klasse definierte Verhalten verfügt.
Instanz - Verweis auf einen Speicherbereich für diese bestimmte Klasse.
Ich kann es nicht glauben, außer einem Mann, der den Code nicht benutzt hat, um das zu erklären, lass es mich auch versuchen!
// Design Class
class HumanClass {
var name:String
init(name:String) {
self.name = name
}
}
var humanClassObject1 = HumanClass(name: "Rehan")
Jetzt ist die linke Seite, dh: "humanClassObject1", das Objekt und die rechte Seite, dh: HumanClass (Name: "Rehan") ist die Instanz dieses Objekts.
var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.
Die Instanz enthält also im Grunde genommen die spezifischen Werte für dieses Objekt und die Objekte enthalten den Speicherort (zur Laufzeit).
Denken Sie an die berühmte Aussage "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt". Dies bedeutet, dass nicht initialisierte Objekte keine Instanz haben. In einigen Programmiersprachen wie swift erlaubt Ihnen der Compiler nicht einmal, eine Klasse zu entwerfen, die nicht alle Mitglieder initialisieren kann (Variable, z. B. Name, Alter usw.), aber in einigen Sprachen dürfen Sie dies tun:
// Design Class
class HumanClass {
var name:String // See we don't have any way to initialise name property.
}
Und der Fehler wird nur zur Laufzeit angezeigt, wenn Sie versuchen, Folgendes zu tun:
var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.
Dieser Fehler zeigt an, dass die spezifischen Werte (für Variablen \ Eigenschaft) "INSTANZ" sind, wie ich oben versucht habe, dies zu erklären! Und das Objekt dh: "myClass" enthält den Speicherort (zur Laufzeit).
Wenn eine Variable von einem benutzerdefinierten Typ (Klasse) deklariert wird, wird nur eine Referenz erstellt, die als Objekt bezeichnet wird. Zu diesem Zeitpunkt ist diesem Objekt kein Speicher zugeordnet . Es fungiert nur als Zeiger (auf den Ort, an dem das Objekt in Zukunft gespeichert wird). Dieser Vorgang wird als "Erklärung" bezeichnet.
Employee e; // e is an object
Wenn andererseits eine Variable vom Typ "Benutzerdefiniert" mit dem new
Operator deklariert wird, der diesem Objekt Speicher im Heap zuweist und den Verweis auf den zugewiesenen Speicher zurückgibt. Dieses Objekt, das jetzt als Instanz bezeichnet wird . Dieser Vorgang wird als "Instanziierung" bezeichnet.
Employee e = new Employee(); // e is an instance
Andererseits entspricht ein Objekt in einigen Sprachen wie Java einer Instanz, wie aus der Zeile in der Oracle-Dokumentation zu Java hervorgeht :
Hinweis: Der Ausdruck "Instanziieren einer Klasse" bedeutet dasselbe wie "Erstellen eines Objekts". Wenn Sie ein Objekt erstellen, erstellen Sie eine "Instanz" einer Klasse und "instanziieren" daher eine Klasse.
Jedes Objekt, das als Instanz seiner Klasse bezeichnet wird, aber jede Instanz der Klasse hat einen eigenen Wert für jedes Attribut. intances teilt den Attributnamen und die Operation mit ihren Intanzen der Klasse, aber ein Objekt enthält einen impliziten Verweis auf seine on-Klasse
Klasse: Eine Klasse ist eine Blaupause. Objekt: Es ist die Kopie der Klasse. Instanz: Dies ist eine Variable, die verwendet wird, um die Speicheradresse des Objekts zu speichern.
Ein sehr einfaches analytisches Beispiel
Klassenhaus -> Blaupause des Hauses. Aber Sie können nicht in der Blaupause leben. Sie benötigen ein physisches Haus, das die Instanz der Klasse ist, in der Sie leben möchten. Die tatsächliche Adresse des Objekts ist also die Instanz. Instanzen repräsentieren Objekte.
Sobald Sie eine Klasse instanziieren (mit new), wird dieses instanziierte Objekt zu einem Objekt. Ein Objekt kann sich an Kapselung, Polymorphismus, Abstraktionsprinzipien der objektorientierten Programmierung und der Realität halten, mit der ein Programm interagiert, um die in der Klasse definierten Instanzmitglieder zu verbrauchen. Das Objekt enthält Instanzmitglieder (nicht statische Mitglieder).
Die Instanz einer Klasse ist also ein Objekt. Das Wort "Instanz" wird verwendet, wenn Sie sich auf den Ursprung beziehen, von dem es stammt. Es ist klarer, wenn Sie "Instanz einer Klasse" sagen, als "Objekt einer Klasse" (obwohl letzteres verwendet werden kann).
Sie können auch den Abschnitt "Innere Klassen" dieses Java-Dokuments zu verschachtelten Klassen lesen - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
Java ist eine objektorientierte Programmiersprache (OOP). Dies bedeutet, dass alles in Java außer den primitiven Typen ein Objekt ist.
Jetzt ähneln Java-Objekte realen Objekten. Zum Beispiel können wir ein Autoobjekt in Java erstellen, das Eigenschaften wie die aktuelle Geschwindigkeit und Farbe hat. und Verhalten wie: beschleunigen und parken.
Das ist Objekt .
Die Instanz auf der anderen Seite ist eine eindeutig initialisierte Kopie dieses Objekts, die aussieht Car car = new Car()
.
Probieren Sie es aus, um mehr über Java-Klassen und -Objekte zu erfahren
Schnelle und einfache Antwort
In Bezug auf den Unterschied zwischen einem object
und einem instance
glaube ich nicht, dass es einen Konsens gibt.
Es sieht für mich so aus, als würden die Leute es ziemlich austauschbar ändern, in Zeitungen, Blog-Posts, Büchern oder Gesprächen.
So wie ich es sehe, ist ein Objekt eine generische und lebendige Entität im Speicher, die durch die Sprache angegeben wird, in der es verwendet wird. Genau wie die Object
Klasse in Java
. Wir kümmern uns nicht viel um seinen Typ oder irgendetwas anderes, das damit verbunden ist, ob er von einem Container verwaltet wird oder nicht.
An instance
ist ein object
aber einem Typ zugeordnet, wie in this method accepts Foo instances
oder you can not put Animal instances in an instance of
a List of Vehicles
.
object
s haben zum Beispiel locks
mit ihnen verbunden, nicht instance
s, während instance
s Methoden haben. objects
werden Müll gesammelt, nicht instance
s.
Aber wie gesagt, so sehe ich das nur, und ich glaube nicht, dass es eine Organisation gibt, auf die wir uns für eine Standarddefinition zwischen ihnen beziehen können, und jeder wird so ziemlich sein leicht unterschiedliches Verständnis / seine Definitionen haben (natürlich in Grenzen). .
Ein Objekt ist eine generische Sache, zum Beispiel eine lineare Funktion in der Mathematik
ax + b ist ein Objekt, während 3x + 2 eine Instanz dieses Objekts ist
Objekt <<< Instanz
Allgemein <<< Spezifisch
Da ist nichts mehr dran
Ein Objekt kann eine Klasse sein, beispielsweise eine Klasse namens Basketball.
Sie möchten jedoch mehrere Basketbälle haben, sodass Sie in Ihrem Code mehr als einen Basketball erstellen
Sagen Sie Basketball1 und Basketball2. Dann führen Sie Ihre Anwendung aus. Sie haben jetzt 2 Instanzen des Objektbasketballs.
Objekt bezieht sich auf Klasse und Instanz bezieht sich auf ein Objekt. Mit anderen Worten, Instanz ist eine Kopie eines Objekts mit bestimmten Werten.