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

Hier sind ein paar richtig nette Features, die dich beim Java lernen unterstützen

Java lernen Eclipse

Was ist das Wichtigste beim Einstieg in ein neues Wissensgebiet? Nein, kein gutes Sachbuch oder ein besonders guter Lehrer. Es ist Spaß. Beim Java Lernen brauchst du Spaß. Es gibt Lehrer, welche ihren Stoff so vermitteln, dass Lernen Spaß bereitet. Aber die Grundvoraussetzung ist und bleibt der Spaß. Und nichts ist so spaßhemmend wie Langeweile […]

Java Übung: Alles beginnt mit Hello World

Java Übung Hello World

Alles beginnt mit „Hello World“. Sämtliche Java Bücher beginnen mit diesem ersten Beispiel. Auch die Java Übungen sollen mit diesem ersten Programm starten. Definiere eine Klasse „Hello World“. Implementiere die Main Methode. Die Main Methode soll bei Programmaufruf die Bildschirmanzeige „Hallo Welt“ zurückgeben. Die Lösung zur Java Übung „Hallo Welt“ public class HelloWorld{ public static […]

So nutzt du Methoden aus der Java String Klasse

Java Strings Methoden

In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr Speicher Mehr Speicher – bessere […]

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 lernen – 10 nützliche Tipps für Java Anfänger

Java Lernen Anfänger

Wenn du die Programmiersprache Java lernen möchtest, bist du hier prinzipiell erst einmal richtig. Und wenn du es wirklich ernst meinst und in die Java Programmierung einsteigen möchtest, solltest du auch meinen kostenlosen Java Kurs beanspruchen. Wenn du dabei bist, bekommst du: Eine Lektion pro Woche zu den Basics. Hier geht es um die ersten […]

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

Polymorphie bringt Vorteile für Java Arrays

Java Polymorphie Arrays

Wenn Java Arrays, Schubladen oder Container sein sollen… Dann wäre der Gebrauch einer solchen Schublade ziemlich einseitig und festgefahren. Denn in jedes Array passen zwar mehrere Daten – aber immer nur vom gleichen Datentyp. Immer gleicher Datentyp? Also eine Schublade nur für Socken, Unterwäsche und der ganze andere Kram passt dann eben nicht hinein. Um […]

Sicherer Schleifendurchlauf mit Do while Schleife

Java Do While Schleife

Es ist doch eigentlich so: Immer wenn du die Anzahl der Schleifendurchläufe nicht kennst, nutzt du in deinen Java Programmen while Schleifen. Doch Java bietet dir neben der While Schleife einen weiteren Schleifentyp an. Diese nennt sich do while Schleife. Was kann die? Eigentlich genau das Gleiche, wie die while Schleife. Mit einem kleinen aber […]

Du bekommst was du vereinbarst – Die Rückgabewerte von Java Methoden

Java Methoden Rückgabetypen

Was du vereinbarst, das bekommst du zurück. Ach wäre es schön, wenn alles im Leben so funktionieren würde. Aber zum Glück funktioniert dieses Prinzip bei deinen Java Methoden. Denn du kannst den Rückgabetypen im Methodenkopf vereinbaren. Doch bevor ich dir zeige, wie du den Rückgabetypen anlegen kannst…. Lass mich dir zeigen, wofür du den Kram […]