Instanz und Objekt unterscheiden...

Syrill

Mitglied
Hallo! :)
Ich habe mir zum Java-Lernen das "Handbuch der Javaprogrammierung" gekauft und kann es auch weiterempfehlen. Allerdings gibt es da das Problem, dass das Buch die Begriffe "Instanz" und "Objekt" synonym verwendet und darauf hinweißt, dass nur Puristen einen Unterschied machen.

Jetzt suche ich den Unterschied, aber leider verweisen die meisten Definitionen des einen Begriffs wiederrum auf den Anderen. :(
ein Objekt ist eine bestimmte Instanz einer Klasse
...instanziert Ihre Anwendung Objekte auf Grundlage der Klasse...

Kennt jemand die genaue Unterscheidung oder zumindest treffsichere Definitionen?
 
Hi,

aus dem Bauch raus würde ich die Begriffe auch als Synonym verwenden.
Streng genommen gibt es aber einen kleinen Unterschied (Klick)

Wie man das Ganze allerdings in verständlichem Deutsch ausdrücken kann, da bin ich jetzt überfragt :)

Gruß
BK
 
Das zu unterscheiden, kann durchaus wichtig sein.. man sollte das nicht untern Teppich kehren!

Ich probiers mal anschaulich zu erklären,...


Du bist Kunstlehrer und willst deine Schüler benoten, ... weil du sparsam bist, holst du nur ein Blatt(Objekt) aus deiner Tasche. Nun darf Schüler1 das Objekt benutzen, danach Schüler2,.. bis Schüler33.

Jetzt hat jeder Schüler das gleiche Objekt(das Papier) gehabt und es geändert. ...Nun steckst du es ein und benotest es, musst aber allen die gleiche Note geben, weil jeder daran mitgearbeitet hat.

Wärst du nicht so sparsam, dann hätte jeder Schüler sein eigenes Papier(Objekt) bekommen und du hättest am Ende nicht allen die gleiche Note geben müssen.

Im ersten Fall hat jeder Schüler die Instanz des Objektes gehabt und im 2ten jeder ein eigenes.

bin nicht gut in simpel erklären :D
spätestens, wenn du einmal damit ein Fehler machst, und dich wunderst, warum alle Objekte im Array gleich sind, obwohl sie beim hinzufügen anders waren, merkste dir das...^^
 
Zuletzt bearbeitet:
Also ist ein Objekt eine Abbildung einer Klasse, und wenn man mehrere gleiche Objekte hat sind das Instanzen des Objekts****
Also Objekt ist der Überbegriff der Abbildung, während Instanz eine Ausgabe eines Objekts ist?

Oder hab ich das falsch verstanden? :)


EDIT: Oder wenn es nach Bratkartoffels Link geht:
Instanz ist die Abbildung einer Klasse. Objekt auch, aber es bezeichnet gleichzeitig einen bestimmten Speicherplatz, auf dem eine Instanz, eben dieses Objekt, sitzt. Das richtig?^^
 
Zuletzt bearbeitet:
ein CodeBeispiel, vllt. wird es so klar

Java:
import java.util.ArrayList;

public class test4 {

   public static void main(String[] args) {
  
      // Eine ArrayListe, welche Double-Arrays aufnimmt
      ArrayList<double[]> al = new ArrayList<double[]>();
      
      // Ein Double-Array-Objekt erstellen wir uns hier
      double[] d = new double[3];
      
      // Wir wollen 10mal ,d' in der Liste haben
      for(int i = 0; i < 10;i++){
         for(int j = 0; j < 3;j++){
            d[j] = i;
         }
         // fügen d hinzu
         al.add(d);
      }
          
      for(int i = 0; i < al.size();i++){
         for(int j = 0; j < 3;j++){
         System.out.println(al.get(i)[j]);
         }
      }
      
   }

}

Die Ausgabe ist immer 9.0, weil wir das Objekt d nur 1mal haben, aber es immer ändern und al nur die Instanz addet.

Java:
import java.util.ArrayList;

public class test4 {

   public static void main(String[] args) {

  
      // Eine ArrayListe, welche Double-Arrays aufnimmt
      ArrayList<double[]> al = new ArrayList<double[]>();
      
      
      // Wir wollen 10mal ,d' in der Liste haben
      for(int i = 0; i < 10;i++){

     // Ein Double-Array-Objekt erstellen wir uns hier
         double[] d = new double[3];

         for(int j = 0; j < 3;j++){
            d[j] = i;
         }
         // fügen d hinzu
         al.add(d);
      }
      
      
      for(int i = 0; i < al.size();i++){
         for(int j = 0; j < 3;j++){
         System.out.println(al.get(i)[j]);
         }
      }
      
   }

}

Hier erzeugen wir uns immer ein neues Objekt, was wir dann hinzufügen....



edit:
EDIT: Oder wenn es nach Bratkartoffels Link geht:
Instanz ist die Abbildung einer Klasse. Objekt auch, aber es bezeichnet gleichzeitig einen bestimmten Speicherplatz, auf dem eine Instanz, eben dieses Objekt, sitzt. Das richtig?^^

Siehe mein Codebeispiel
 
Zuletzt bearbeitet:
Hmm.....

Also eigentlich laut Java Language Specification 4.3.1
An object is a class instance or an array.

The reference values (often just references) are pointers to these objects, and a special null reference, which refers to no object.

Ein Objekt ist entweder eine Instanz einer Klasse oder ein Array.
Variablen halten Referenzen auf Objekte.

Herbertus spricht von Referenzen auf die Objekte.

Auch hier im Original nachzulesen: http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html

Die Begriffe die im Buch verwendet werden, sind damit korrekt.
 

Neue Beiträge

Zurück