Skip to main content

So lassen sich aus Java Klassen Instanzen erstellen

Lass uns jetzt aus den Java Klassen heraus Objekte anlegen.

Im Einführungsbeispiel hast du bereits gelernt, wie du:

  • Instanzvariablen bzw. Attribute anlegst
  • Wie du aus einer normalen Java Klasse eine Programmstart Klasse machst

In diesem Artikel erfährst du:

  • Was Objekte bzw. Instanzen sind.
  • Wie sich Objekte zusammensetzen.
  • Wo und wie du Instanzen aus Java Klassen anlegen kannst.
  • Und was genau bei diesem Vorgang passiert.

Objekte bzw. Instanzen sind eine Zusammenfassung von Daten aus Java Klassen.

Stell es dir als Trichter vor.
Oben kommen die Instanzvariablen rein.
Diese werden dann zusammengefasst und es entsteht ein neuer Datentyp.

Java Klassen Datentypen erstellen

Objekte sind somit eine Zusammenfassung von Daten aus einer bestimmten Klasse.
Und den Bauplan für die ganze Zusammenstellung liefern die Java Klassen.

Am Beispiel:
In unserem Java Adventure haben wir bisher diverse Klassen angelegt.
In der Beispielklasse Held habe ich dir bereits gezeigt, wie du Instanzvariablen anlegen kannst.
Wir haben bisher drei Attriubute der Klasse angelegt:

  • den Namen
  • das Alter
  • die Größe

Java Klassen Instanzvariablen der Klasse Held

Wenn wir diesen Trichter jetzt einsetzen, um einen Helden zu erschaffen….
Java Klassen Instanzvariablen zusammenfassen

Dann werden die Instanzvariablen „heldAlter“, „heldGroesse“ und „heldName“ zusammengefasst.
Und es entsteht ein Objekt vom Datentypen eines Helden.
Dieser neue Datentyp fasst drei primitive Daten (String, int und float) zusammen.
Man spricht deshalb auch von einem komplexen Datentypen.

Und wenn du jetzt Objekte von diesem Datentypen anlegst, nennt man diese:

  • Instanzen der Klasse
  • Objekte der Klasse
  • Oder auch Member der Klasse

Bevor wir gleich Objekte aus der Heldenklasse anlegen, lass uns noch folgende Frage klären:

In welchen Java Klassen kannst du Objekte anlegen?

Instanzen kannst du in allen Klassen anlegen.

Zum Beispiel:
Kannst du Objekte der Klasse „Held“ in der Monsterklasse anlegen.
Du kannst sogar Objekte der Klasse Start in der Klasse „Raumschiffe“ anlegen.

Das Ganze ist also recht flexibel.

Die Frage sollte somit nicht lauten:
Wo kannst du Objekte anlegen.
Sondern – wo macht es Sinn?

Und deshalb ist die Frage – „Wann sollten im Programmablauf Objekte erzeugt werden?“ – die bessere.

Schauen wir uns die bisherigen Klassen einmal an:

Java Klassen Instanzvariablen der Klasse Held

Wo könntest du jetzt Helden erschaffen?
Klar bei den Monstern oder bei den Raumschiffen.
Möglich ist es – Aber es ergibt für unsere jetzige Konstellation wenig Sinn.

Die Helden sollen zum Programmstart erschaffen werden.

Und wo findet der Programmstart statt?
In der main-Methode.

Java Klassen Objekte erschaffen zum Programmstart

Alles was der main-Methode übergeben wird, wird beim Programmstart ausgeführt.
Und das heißt: jede Anweisung, jeder Methodenaufruf.

Also warum übergeben wir der main-Methode nicht ein paar Helden. 🙂
Doch wo genau?
Schau dir dieses Bild dazu an:

Java Klassen Querschnitt Startklasse

  • Wenn du die Heldobjekte auf Ebene der Klasse (roten Teil) anlegen würdest, gehören diese zur Klasse Start.
  • Die Startklasse hat nichts mit dem Programmstart zu tun.
    Es ist lediglich von uns gewollt, dass diese Klasse so heißt und diese Methode anbietet.
  • Das entscheidende Element für den Programmstart ist die main-Methode.
    Und diese Methode könntest du in jeder Klasse implementieren.
  • Die Objekte müssen also innerhalb des blauen Teils, dem Methodenrumpf, erstellt werden.

Ganz konkret würde dies dann so aussehen:

Java Klassen Start Rumpf der Main Methode

Jetzt haben wir das Was und das Wo geklärt….
Dann lass es uns endlich auch tun. 🙂

So kannst du Objekte aus Java Klassen erstellen.

Das wäre der Code zum Erstellen von zwei Java Objekten der Klasse „Held“:


public class Start {

	public static void main(String[] args) {
		Held heldEins = new Held();
		Held heldZwei = new Held();
	}
}

Schauen wir uns den Code genauer an.
Und zwar von rechts nach links.

Der rechte Teil ist der Konstruktoraufruf.

Java Klassen Instanz anlegen Konstruktoraufruf

Auf der rechten Seite der Gleichung siehst du die Anweisung: new Held().
Dies ist ein sogenannter Konstruktoraufruf, welcher ein Held-Objekt anlegt.
Java Klassen new Anweisung

Da dieser Konstruktor in meinem Code zweimal aufgerufen wird, entstehen zwei Objekte.
Und da in der Anweisung Held() und nicht Monster() steht, werden Objekte der Heldenklasse erstellt.

Falls du aus allen anderen Java Klassen ebenfalls Instanzen erstellen möchtest, musst du den hinteren Teil des Codes ersetzen.

  • new Held() – erschafft einen Helden
  • new Monster ()- erschafft ein Objekt aus der Klasse Monster
  • new Raumschiff()- erschafft ein Objekt aus der Klasse Raumschiff.
  • ….usw

Okay das haben wir geklärt.
Schauen wir uns den ersten Teil der Anweisung an.

Der linke Teil ist die Variable.

Java Klassen Referenzvariablen anlegen

Links der Gleichung siehst du die Variable, welche angelegt wird.
Diese Variablen heißen „heldEins“ und „heldZwei“.
Java Klassen Referenzvariablen

  • Die Variablen beinhalten ein Verweis auf dieses Objekt im Speicher.
  • Du kannst auch sagen: „Die Variablen zeigen auf die Objekte“.
    Und weil diese Variablen lediglich verweisen, nennt man diese auch Referenzvariablen.
  • Den Namen der Variablen kannst du frei wählen.

Weiterhin müssen alle Variablen einem gewissen Datentyp entsprechen.
In diesem Fall ist es der komplexe Datentyp „Held“.

Verbunden werden beide Seiten durch eine Zuweisung.

So jetzt haben wir die rechte und linke Seite des Codes geklärt.
Scheinbar verbunden werden beide Teile durch ein Gleichheitszeichen.
Es ist aber kein Gleichheitszeichen.
Es handelt sich hier auch nicht um eine Gleichung.

Java Klassen Zuweisung

Stattdessen spricht man von einer Zuweisung.
Und diesen Operator (=) nennt man Zuweisungsoperator.

Weil es wirklich wichtig ist….

Zusammenfassend nochmal den ganzen Code von links nach rechts:

Java Klassen Objekte anlegen

  • Zuerst der Datentyp „Held“.
    Dieser ist ein komplexer Datentyp, da dieser die Instanzvariablen der Klasse „Held“ zusammenfasst.
  • Dann folgen die Referenzvariablen „heldEins“ und „heldZwei“.
    Diese verweisen auf zwei Objekte im Speicher.
  • Dann folgt die Zuweisung in Form eines „Gleichheitszeichens“.
  • Und schließlich – Auf der rechten Seite des Codes befindet sich ein sogenannter Konstruktoraufruf.
    Durch diesen Konstruktoraufruf werden zwei „Held-Objekte“ im Speicher angelegt.

Ich möchte dir noch ganz kurz zeigen, dass du aus allen Klassen heraus Objekte anlegen kannst.
Unsere bisherigen Klassen aus dem Einführungsbeispiel sind:

Java Klassen Instanzvariablen der Klasse Held

Und hier der Code mit Kommentaren.


public class Start {

	public static void main(String[] args) {
		Held heldEins = new Held();//Helden Objekt 1
		Held heldZwei = new Held();//Helden Objekt 2
		Monster monsterEins = new Monster();//Monsterobjekt hat noch keine Attribute
		Start starterPacket = new Start();//Objekt der Klasse Start
		Monster heldNamen = new Monster();//Der Name der Variablen kann frei gewählt werden
		
		Monster monsterZwei = new Held();//Das geht nicht da Monster kein Held ist
	}
}

Du siehst:

  • Du kannst aus allen Klassen Objekte anlegen.
  • Der Name der Referenzvariablen ist völlig egal.
  • Einen Helden vom Datentyp Monster kannst du nicht anlegen.

Da ich bisher nur in der Heldenklasse, Instanzvariablen deklariert habe – kann ich zwar aus allen Klassen Objekte erstellen.
Diese haben aber keine Eigenschaften /Attribute.
Es ist somit zu diesem Zeitpunkt sinnlos diese Instanzen anzulegen.

Und somit zurück in die Heldenklasse. 🙂

Diese erstellten Objekte beinhalten dann alle Attribute aus den jeweiligen Java Klassen.

Ich habe einmal die Variablen der Heldenklasse durch die gelben Punkte dargestellt.

Java Klassen 2 Objekte

Du siehst ja, dass jedes Objekt jetzt eigene gelbe Punkte hat.
Das bedeutet, dass jedes Objekt dieser Java Klasse eigene Eigenschaften bzw. Werte beinhalten kann.
Somit kannst du zwei Objekte erstellen und diesen individuelle Werte für die Instanzvariablen zuweisen.

Und dann hast du ganz individuelle Heldenobjekte, welche sich klar in ihren Eigenschaften unterscheiden.

Wie du den Attributen Werte zuweist, zeige ich dir im nächsten Beitrag.

Zusammenfassung:

  • Aus den einzelnen Java Klassen lassen sich Objekte erstellen.
  • Diese Instanzen entsprechen dann einem neuen Datentypen.
    Der Datentyp ist eine Zusammenfassung der Instanzvariablen aus den entsprechenden Java Klassen.
  • Um so eine Instanz zu erstellen, muss eine Referenzvariable des neuen Datentypen angelegt werden.
    Diese speichert einen Verweis zum Objekt.
  • Ein neues Objekt kann nur über den Aufruf des Konstruktors der entsprechenden Java Klassen erstellt werden.

Ähnliche Beiträge

Die sechs Bestandteile von Java Methoden

Java Methoden Bestandteile

Java Methoden hauchen deinem Java Programm Leben ein. Ohne eine Methode würde deine Java Klasse ein starres Konstrukt sein. Deine Objekte hätten Eigenschaften. Aber sie könnten nichts machen. Und das wäre eine trostlose Welt. Java Methoden sorgen also dafür, dass Objekte interagieren. Methoden bestehen aus bestimmten Bausteinen. Und diese Bausteine bestimmen, was die Methode darf […]

So richtest du einen Schreibschutz für deine Java Variablen ein

Stell dir vor: Du hast erfolgreich dein erstes Programm für die Personalabteilung aufgesetzt. Du hast deine ersten 1000 Datensätze schön sauber angelegt. Und nun kommt dein Kollege und überschreibt die Vornamen der ersten 100 Mitarbeitern. Na schöne Sch…. 🙂 Wie kann das passieren? Wie kann man das verhindern? Du brauchst eigentlich nur deine Java Variablen […]

Das Java Vererbung Konzept in einem Rollenspiel

Java ist eine objektorientierte Programmiersprache. Und das bedeutet nicht nur, dass du Objekte einer Java Klasse erzeugen kannst. Es bedeutet auch, dass Java Klassen von anderen Klassen erben können. Wieso das Ganze? Stell dir einmal ein Rollenspiel vor. Wie würdest du ein Rollenspiel entwerfen? In einem Rollenspiel gibt es magische Gegenstände. Zauberringe, Zauberstäbe, welche bei […]

So erstellst du deine ersten Java Klassen mit Eclipse

Java Klassen sind Baupläne für Java Objekte. Und da Java eine objektorientierte Programmiersprache ist, sind Java Klassen somit ein elementarer Bestandteil. In diesem Beitrag möchte ich dir zeigen, wie du eine Java Klasse in Eclipse erstellen kannst. Ich möchte dir außerdem zeigen, was physikalisch in deinem Projekt passiert. Ganz zum Schluss zeige ich dir noch, […]

So kannst du Java Konstanten bei der Programmierung nutzen

Java Konstanten – was kann man sich darunter vorstellen? Du kennst Konstanten in der Mathematik. Die Kreiszahl Pi ist so eine konstante Zahl. Diese Zahl ändert sich niemals. Sie beträgt immer rund 3,141592. In der Physik gelten die Lichtgeschwindigkeit, der Erdradius oder der absolute Nullpunkt als konstant. Selbst die Geschwindigkeit mit der sich die Erde […]

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

Java Methoden mit variabler Argumentenanzahl – VarArgs

Java Methoden mit variabler Argumentenanzahl VarArgs

Du kennst das noch. Kopfrechnen und zwar auf Zeit. So etwas ist das Standardprogramm in den Schulklassen 1 bis 5. Irgendwann, in Klasse 6 oder 7, kommt der Taschenrechner ins Spiel und Kopfrechnen ist aus dem Schulalltag gestrichen. Schade eigentlich. Dabei kann man diese Disziplin auch wunderbar in kleinen Spielen unterbringen. Ich erinnere mich noch: […]

So kannst du Java installieren

Java installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen