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

Das Instanzieren von Java Klassen verhindern

Java Objekte Instanzieren verhindern

Die Instanzierung von Java Klassen verhindern. Was heißt das? Instanzen sind die Objekte einer Java Klasse. Und Instanzieren oder Instanzierung heißt nichts anderes, als Objekterstellung. Aber was soll das? Oder mal anders gefragt: Wieso sollte man verhindern, dass eine Java Klasse – Objekte erstellen kann? Schließlich sind doch Objekte der Sinn und Zweck jeder objektorientierten […]

Java Übung 26 – Das erste kleine Java Spiel

Java Übung Zahlenraten

In dieser Java Übung geht es darum ein kleines Java-Spiel zu erstellen. Und zwar Zahlen raten. Was kannst du dir darunter vorstellen? Du gibst einen bestimmten Wertebereich an. Zum Beispiel 0 bis 100. Und das Java Programm erstellt eine Zufallszahl in diesem Bereich. Dann fordert dich das Programm auf, die Zahl zu raten. Du gibst […]

10 ganz nützlichen Feature der Klasse Java Math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch für Nichtmathematiker ist etwas dabei. […]

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 […]

Java Übung 25 – Simuliere eine Gelddruckmaschine

Java Übung Gelddruckmaschine

In dieser Java Übung geht es um Schleifen. Und zwar möchte ich, dass du eine virtuelle Geldruckmaschine erstellst. Was meine ich damit? Du gibst in der Konsole einen x-beliebigen Betrag ein und das Programm gibt dir virtuelle Geldscheine zurück. Ein Beispiel: Du gibst die Zahl 400 ein. Dann liefert dir das Programm 2 x 200 […]

So legst du Utility Klassen in Java an

Java Utility Klassen

Utility Java Klassen – was ist das? Man nennt diese auch Hilfsklassen von Java. Diese Utility Klassen sind Java Klassen, welche lediglich Methoden und Konstanten anbieten. Am Beispiel: Die Klasse Math ist so eine klassische Utility Klasse. Wozu braucht man solche Klassen? Diese Klassen sind so etwas wie ein Werkzeugkoffer für jedes Java Programm. Hier […]

So nutzt du getter und setter Methoden bei der Java Programmierung

Java Keyword private

In diesem Artikel möchte ich dir zeigen, wie du Instanzvariablen innerhalb der Java Klasse schützt. Und den Zugriff nur noch indirekt über getter und setter Methoden anbietest. Stell dir vor. Du hast ein Programm zur Lagerverwaltung geschrieben. Dieses Programm dient Möbelhäusern dazu, ihre Bestände zu verwalten. Und das Programm erwartet vom Nutzer gewisse Eingaben zu […]

3 Möglichkeiten – Java Strings verketten und zusammenfügen

Java Strings verketten

Kennst du dieses Relikt längst vergangener Tage? Ein Brief. Ja früher einmal war es üblich, Briefe zu schreiben. Lange bevor es Smartphones oder Email gab. Man stelle sich einmal vor…. Die Leute mussten sich hinsetzen mit einem Blatt und einem Stift – und richtig schreiben. Nein nicht tippen – schreiben. 🙂 Grausame Welt, oder? Aber […]

3 Möglichkeiten um Vererbung von Java Klassen zu verhindern, zu verbieten oder ausschließen

Java Vererbung verhindern

Die ganze Java Vererbung für bestimmte Klassen ausschließen bzw. verhindern oder verbieten. Was soll das? Für bestimmte Java Klassen soll die Vererbung ausgeschlossen werden. Es soll also verhindert werden, dass Elternklassen – Kindklassen bekommen können. Klingt ein bisschen wie Verhütung, oder? Denn wie auch im echten Leben, können Kinder zu kleinen Tyrannen werden. Sie bedienen […]

So kannst du deine Eclipse Oberfläche anpassen

Eclipse anpassen

In diesem Beitrag möchte ich dir zwei ganz nette Features von Eclipse vorstellen. Es geht um Views und um Perspektiven. Wie du schon weißt, besteht Eclipse aus einer grafischen Oberfläche. Und in dieser Oberfläche stehen dir verschiedene Views zur Verfügung. Was ist so ein View?