Skip to main content

Die vier wichtigen Phasen um Java Objekte zu erstellen

Wie werden aus deinen Java Klassen richtig nützliche Java Objekte?

Das ganze läuft in vier Phasen ab.
Und diese Phasen möchte ich dir in diesem Beitrag vorstellen.

Ob das nützlich ist?
Schau dir das Bild an.

Java Objekt Fehlermeldung

Am Ende dieses Beitrages wirst du wissen, warum Eclipse dir hier eine Fehlermeldung gibt und wie du dieses Problem lösen kannst.

Na Interesse?
Na dann sind hier die vier Phasen der Java Objekt Erstellung.

Phase 1: Alle Java Objekte werden durch die Anweisung new erstellt.

Schau dir diese Klasse einmal an.

public class ObjektErstellung {
private int zaehler; //Instanzvariable
 
public ObjektErstellung() { //Konstruktor
}
 
public static void main(String[] args) {
ObjektErstellung erstesObjekt = new ObjektErstellung(); //Anweisung um zum Java Objekt erstellen
}
}

Um ein Java Programm zu starten, benötigst du die main-Methode.
Und somit beginnt die Reise immer dort.

In der main-Methode befindet sich die Anweisung, um ein neues Java Objekt zu erstellen.
Dabei wird zuerst der Datentyp festgelegt.
Dieser entspricht dem Klassennamen.

Java Objekt Datentyp

Danach folgt der Name des Objektes bzw. der Instanz.
In diesem Fall „erstesObjekt“.
Unter diesem Namen wird die Referenz im Hauptspeicher verwaltet.

Dann erfolgt die Zuweisung in Form des Gleichheitszeichens.

Java-Objekt-erstellen-Zuweisung

Dann folgt das Keyword new.
Java-Objekt-erstellen-new

Dies ist die Anweisung, dass ein neues Objekt angelegt werden soll.
Java-Objekt-erstellen-Konstruktoraufruf

Hinter dem new Keyord befindet sich der Aufruf des Konstruktor.
Du kannst in jeder Klasse mehrere verschiedene Konstruktoren anlegen.
Hier legst du fest, mit welchem Konstruktor das Objekt erschaffen werden soll.

In dieser Klasse haben wir lediglich einen parameterlosen Konstruktor.
Und diesen rufst du auf und erschaffst dein Java Objekt.

Das war es schon mit Phase eins.

In Phase zwei wird die Instanzvariable deklariert

Alle wichtigen Dinge werden verpackt und gespeichert.

In der Java Klasse siehst du die Instanzvariable „zaehler“.
Jetzt wird diese Instanzvariable deklariert.

Java-Objekt-erstellen-Variable-deklarieren

Es wird somit ein konkreter Speicherplatz für diese Variable reserviert.
In diesem Fall wird ein Speicherplatz in Höhe eines Integer-Datentypen angelegt und für die Variable „zaehler“ reserviert.

In Phase drei wird der Instanzvariablen ein Wert zugewiesen

Und deshalb kommt es auch zur eingangs erwähnten Fehlermeldung.

Java Objekt Fehlermeldung

Auf diesem Bild siehst du, dass eine Instanzvariable angelegt wurde.
Und der Compiler liest den Code von oben nach unten.
Hat der Compiler den kompletten Code in Phase 2 durchgearbeitet werden alle Instanzvariablen angelegt.

Und jetzt steckt der Compiler in Phase zwei (Variablendeklaration) und es soll einer Variablen, welche noch nicht existiert einen Wert zuweisen.
Das geht natürlich nicht.

Also solltest du den Wert bei der Deklaration zuweisen.

public class ObjektErstellung {
private int zaehler=2; //Deklaration und Zuweisung
 
public ObjektErstellung() { //Konstruktor
}
 
public static void main(String[] args) {
ObjektErstellung erstesObjekt = new ObjektErstellung(); //Anweisung um zum Java Objekt erstellen
}
}

Aber auch dann werden in Phase 2, die Variablen angelegt.
Und erst in Phase drei, wenn alle Variablen deklariert wurden, wird dieser ein Wert zugewiesen.

Phase drei kannst du auch mit separaten Codeblöcken vollziehen.

Ein Codeblock beginnt mit einer öffnenden Klammer und endet mit einer schließenden Klammer.

public class ObjektErstellung {
private int zaehler; //Phase 2 - Deklaration der Instanzvariablen
{
System.out.println("Instanzvariable angelegt. Wert = "+zaehler);//Phase 3 - Zuweisung der Instanzvariablen
}
 
public ObjektErstellung() { //Konstruktor
}
 
public static void main(String[] args) {
ObjektErstellung erstesObjekt = new ObjektErstellung(); //Phase 1 - Erstellung des Objektes 
}
}

Und innerhalb dieses Blockes kannst du der Instanzvariablen einen Wert zuweisen.
Um das Ganze zu testen, befindet sich im Codeblock die Anweisung für die Konsolenausgabe.

Da in diesem Beispiel der Instanzvariablen noch kein Wert zugewiesen wurde, bekommt diese in Phase 3 einen default-Wert.

Jeder primitive Datentyp hat seinen eigenen default-Wert.
In diesem Fall bekommt die Integer Variable den Wert 0.

In Phase 4 werden die Anweisungen im Konstruktorrumpf ausgeführt.

Das Java Objekt wurde jetzt komplett angelegt.

Jetzt im Konstruktorrumpf kann der Instanzvariablen ein neuer Wert zugewiesen werden.

Um die ganzen vier Ablaufphasen besser zu demonstrieren, schau dir diesen Code einmal.

public class ObjektErstellung {
	private int zaehler;	

	public ObjektErstellung() { //Konstruktor
		zaehler=2;
		System.out.println("Phase 4. Konstruktorrumpf wird ausgeführt");
		System.out.println("Die Instanzvariable hat jetzt den Wert " +zaehler);
	}
	
	public static void main(String[] args) {
		System.out.println("Phase 1: Konstruktor wird aufgerufen");
		ObjektErstellung erstesObjekt = new ObjektErstellung();
	}
	{
		System.out.println("Phase 2: Instanzvariable angelegt.");
		System.out.println("Phase 3: Instanzvariable wurde der default-Wert "+zaehler+" zugewiesen.");
	}
}

Ganz bewusst sind die Codeblöcke (Phase 2 und 3) unter dem Konstruktor.

Wenn du diesen Code einmal ausführst, dein Programm also startest, wirst du bemerken:

  • Der Compiler führt den Code nicht strikt von oben nach unten aus.
  • Stattdessen erfolgt die Ausführung der einzelnen Programmanweisungen nach den vier beschriebenen Phasen.

Zusammenfassung:

  • Die Objekt-Erstellung durchläuft vier Phasen.
  • In der ersten Phase werden die Java Objekte angelegt. Dazu wird ein Speicherplatz für dieses Objekt reserviert.
  • In Phase 2 wird ein Speicherplatz für die Instanzvariablen reserviert.
  • In Phase 3 werden den Instanzvariablen die Werte zugewiesen.
  • Erst in Phase 4 wird der Code im Konstruktorrumpf ausgeführt.

Ähnliche Beiträge

So kannst du zweidimensionale Java Arrays anlegen und nutzen

Java Arrays zweidimensional

Eines der bedeutendsten Instrumente in der Mathematik ist das Koordinatensystem. Die gedankliche Grundlage dieses Werkzeuges lieferte der französische Naturwissenschaftler und Philosoph Rene Descartes. Man muss sich einmal verdeutlichen, was dies für die damalige Zeit bedeutete. Bisher wurden mathematische Probleme lediglich durch Berechnungen gelöst. Denke an geometrische Figuren, wie Dreiecke und Vierecke. Der Umfang wurde lediglich […]

Ende vom Java Blog?

Falls du hier schon länger dabei bist, wird dir aufgefallen sein – dass kaum noch Beiträge veröffentlicht werden. Das tut mir wirklich leid und dafür möchte ich mich auch entschuldigen. Ich weiß, dass Einige unter Euch den Java-Blog wirklich lieben. Aber es ist verdammt schwierig so ein aufwendiges Thema – stilvoll, unterhaltend und methodisch umzusetzen. […]

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 einfach lassen sich Java Strings umkehren

Java Strings umkehren

Kennst du noch das Lied „ANNA“ von Freundeskreis? Da hieß es: Du bist von hinten, wie von vorne A-N-N-A. Solche Namen oder Wörter, welche von hinten nach vorne gelesen – die gleiche Bedeutung haben, nennt man Palindrome. Anna, Ehe oder Ebbe sind recht kurze Palindrome. Aber auch längere zusammengesetzte Palindrome kennt die deutsche Sprache: Regallager […]

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

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

Java Zufallszahl

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. auftreten. Die Einsatzmöglichkeiten für Zufallszahlen […]

Java Strings landen im String Constant Pool

Java-Strings-Pool

Du kennst das. Es ist abends. Du sitzt gemütlich vor dem Fernseher. Das Smartphone bimmelt. Kein Anruf. Nein – Eine Nachricht. Du liest die Nachricht sofort und antwortest darauf. Minuten später bekommst du die nächste Nachricht. Und auch auf diese antwortest du. Im Laufe des Abends entsteht daraus eine nette kleine Konversation. Und eh du […]