Was sind klassen, objekte und objektreferenzen in Java?

3 Antworten

Klassen sind so etwas abstraktes, um zu beschreiben, WIE Objekte gleicher Art sind. Sie haben alle die gleichen Eigenschaften, Methoden und Ereignisse. Aber bei den Eigenschaften müssen sie nicht die gleichen Werte haben! Die Klasse an sich beschreibt nur WIE etwas funktioniert oder sein kann: Beispiel für eine Klasse ist "Mensch". So....und Mensch hat von mir aus die Eigenschaften "Name", "Geschlecht" und "Geburtsdatum". Jeder hat dies, aber es ist nicht bei jedem gleich! Klassen sind etwas festes....statisches....unveränderlich!

Objekte sind Instanzen von diesen Klassen. Sie sind dynamisch. DU bist eine Instanz von Mensch und ICH bin eine andere Instanz von Mensch. Wir beide haben Namen, Geschlecht und Geburtsdatum. Im Falle von Namen und Geschlecht, kann man die Eigenschaften sogar ändern! DAS ist der Unterschied, zwischen Objekte und Klassen!

Es gibt noch technisch auch einen Unterschied. Eine Klasse sind Strukturen und Rechenvorschriften, welche im Kodesegment rumliegen (Speicher des Prozesses). Objekte sind Daten und liegen logischerweise im Datensegment rum.

Objektreferenzen sind nur Bezüge auf diese Objekte! In Java werden Klassen immer mit CallByReference abgefragt. Das bedeutet: man bekommt IMMER die Referenz zu diesem Objekt!

Beispiel:

class myClass // <--- KLASSE...statisch
{
public myClass(int number)
{
this.number = number;
}
public int number=0;
}
//......
myClass myObject1 = new myClass(5); // <---- Objekt
myClass myObject2 = myObject1; //Objekt2 hat die SELBE Referenz wie Objekt1 <----Objektreferenz

myObject2.number = 10;

System.out.printLine("" + myObject1.number);

So....ich habe ein Objekt instanziert und dann noch eine zweite Variable mit der SELBEN Refernz belegt. Danach habe ich das Objekt aus der zweiten Variable verändert.

So...was glaubst du was als Ausgabe kommt? naa? Richtig: 10

Und warum? .... Korrekt: Objekt1 und Objekt2 haben die SELBEN Objektreferenzen! Also die Selbe Adresse!

Also nochmal kurz:

Klassen sind statische Vorschriften, wie ein Objekt aufgebaut ist.

Objekte sind dynamische Instanzen dessen.

Objektreferenzen sind die Adressen zu diesen Objekten.

Ich hoffe ich konnte dir helfen! Ich hoffe du verstehst mich. :-)

Freundliche Grüße
Omni


Omnivore08  21.02.2016, 19:11

Upps....ich habe mich an einer Stelle vertippt ^^ Wer den inhaltlichen Fehler findet, kann sich melden ^^ PS: Rechtschreibfehler zählen nicht!

0

Die Begrifflichkeiten werden im Internet so oft erklärt mittels Videos, Bildern und/oder Text. Hast du dir da schon einiges angesehen? Denke nicht dass hier jemand mit einem völlig neuen Erklärungsansatz daher kommt.

Kurz und knackig:

Klassen repräsentieren Konstrukte, welche ein Muster vorgeben wie etwas Beschaffen ist. Du erstellst beispielsweise eine Klasse "Auto" und diese Klasse könnte eine Methode "fahren" enthalten oder hat ein Attribut "Geschwindigkeit", um eben das "Auto" in seiner Beschaffenheit zu repräsentieren.

Objekte werden mittels der Klassen instanziiert. Ich könnte z.B. die Klasse "Auto" instanziieren und rufe damit ein Objekt der Klasse ins Leben. Ich kann auch mehrere Objekte der Klasse "Auto" intanziieren. Sie haben dann unterschiedliche Geschwindigkeiten, Farben, Ausstattung usw... . Und mit den Objekten erst kannst du irgendwas anstellen, wie bereits oben erwähnt, könnte ich jetzt im Code eine neue Zeile schreiben und damit einem meiner instanziierten Autos den Befehl erteilen zu "fahren" (Die Methode "fahren" wird ausgeführt).

Objektreferenzen erlauben mir auf die Objekte zuzugreifen. Jedes von mir erstellte "Auto" wurde im Speicher abgelegt und die Eigenschaften eines jeden Autos individuell gespeichert. Prinzipiell kann ich jetzt von verschiedenen Stellen aus im Code auf die verschiedenen Objekte, sprich meine Autos, zugreifen (Da gibt es natürlich Einschränkungen, aber das würde jetzt den Rahmen sprengen). Je nach dem wie ich meine Autos im Speicher verankert habe, kann ich mit entsprechenden Befehlen auf diese zugreifen. Objektreferenzen sind um Grunde nur Verweise auf bereits vorhandene Objekte.

Sorry, wurde jetzt doch etwas länger. Soviel zu "kurz und knackig. Aber die Begriffe sind nun mal sehr zentrale Elemente in der objektorientierten Programmierung. Ich hoffe, dadurch wird das etwas durchsichtiger.