Die 2 Phasen der Klassen-Initialisierung im Java Programm
Schlagwörter: Java Klasse


Die Java Klassen Initialisierung durchläuft zwei Phasen.
Diese beiden Phasen sind im Grunde genommen, wie die Phasen 2 und 3 bei der Instanz-Initialisierung.
In Phase eins werden die Klassenvariablen der entsprechenden Java Klassen angelegt
Das heißt diese werden deklariert.
Schau dir den folgenden Code dazu an.
Uns interessiert jetzt erst einmal nur die Klassenvariable x.
public class KlassenInitialisierung {
public static int x=5; //statische Variable vom Datentyp Integer
int y; //Instanzvariable vom Datentyp Integer
public static void main (String [] args){
}
}
Es wird also java intern ein Speicherplatz für die Variable x reserviert.
Die Größe des reservierten Speicherplatzes ist wieder abhängig vom jeweiligen Datentyp.
Und das war es dann auch schon mit Phase eins.
In Phase zwei wird der Variablen dann ein Wert zugewiesen und es werden Methoden gepackt.
Jetzt, in Phase zwei, wird der Klassenvariablen der entsprechende Wert zugewiesen.
public class KlassenInitialisierung {
public static int x=5; //Zuweisung des Wertes 5 in Phase zwei der Java Klassen Initialisierung
int y; //Instanzvariable vom Datentyp Integer
public static void main (String [] args){
}
}
Das bedeutet:
Erst in Phase zwei bekommt die Variable den Wert 5 zugewiesen.
Außerdem werden jetzt die Instanzmethoden angelegt.
In diesem Beispiel siehst du die Instanzmethode zunehmenWerte(), welche den Wert der Instanzvariable erhöht.
public class KlassenInitialisierung {
public static int x=5; //statische Variable vom Datentyp Integer
int y; //Instanzvariable vom Datentyp Integer
public void zunehmenWerte(){ //Instanzmethode erhöht den Wert der Instanzvariablen
y=y+22;
System.out.println(y);
}
public static void main (String [] args){
}
}
Diese Methode wird jetzt java-intern als statische Methode gewandelt.
Diese würde dann als Argument ein Objekt der Klasse erwarten und die Instanzvariablen des Objektes erhöhen.
In diesem Fall heißt das Argument bzw. Variable ganz einfach „wert“.
Und diese Variable ist vom Datentyp „KlassenInititialsierung“.
public class KlassenInitialisierung {
public static int x=5; //statische Variable vom Datentyp Integer
int y; //Instanzvariable vom Datentyp Integer
public void zunehmenWerte(){ //Instanzmethode
y=y+22; //Erhöhung der Instanzvariablen
System.out.println(y); //Rückgabe von y
}
public static void zunehmenWerte(KlassenInitialisierung wert){ //abgewandelte Klassenmethode
wert.y=wert.y+22; //Erhöhung der Instanzvariablen
System.out.println(wert.y); //Rückgabe von y
}
public static void main (String [] args){
KlassenInitialisierung objektEins = new KlassenInitialisierung(); //Objekt erzeugen
objektEins.zunehmenWerte(); //Aufruf der Instanzmethode
zunehmenWerte(objektEins); //Aufruf der Java Klassen Methode
}
}
Klar ist, dass beide Methoden genau das Gleiche machen.
Rufe doch, so wie ich auch, beide Methoden einmal in der main-Methode auf und klicke auf „Run“.
Die Instanzvariable y wurde genau zweimal um 22 erhöht.
Nicht schlecht, oder?
Und genau das macht Java mit Instanzmethoden.
Intern werden diese bei der Klassen Initialisierung als statische Methoden gewandelt und geführt.
Das ganze spielt für dich erst einmal keine Rolle.
Was aber durchaus wichtig ist, ist der Unterschied zwischen der Instanz-Initialisierung und der Klassen-Initialisierung.
Also, worin liegt jetzt der Unterschied zur Instanz Initialisierung
Oder warum ist es wichtig, diese Phasen zu kennen.
Klar bei der Instanzinitialisierung durchläuft das Programm 4 Phasen.
Aber es gibt noch einen anderen Unterschied.
Und zwar, wie oft diese Phasen durchlaufen werden.
Ich verwende einmal zwei Codeblöcke um dies besser zu verdeutlichen.
public class KlassenInitialisierung {
public static int x=5; //statische Variable vom Datentyp Integer
int y; //Instanzvariable vom Datentyp Integer
{ //nicht statischer Initialisierungsblock
System.out.println("Instanzinitialisierung abgeschlossen");
}
static { //statische Initialsierungsblock
System.out.println("Klasseninitialisierung abgeschlossen");
}
public static void main (String [] args){
KlassenInitialisierung objektEins = new KlassenInitialisierung(); //Objekt erzeugen
KlassenInitialisierung objektZwei = new KlassenInitialisierung(); //neues Objekt erzeugen
}
}
Der erste Codeblock ist statisch. Dieser erzeugt die Bildschirmausgabe „Die Klasseninitialisierung ist abgeschlossen“.
Der zweite Codeblock ist nicht statisch. Dieser dient der Objekt- oder Instanzinitialisierung.
Wenn du jetzt innerhalb der main Methode zwei Objekte anlegst und dann auf „Run“ klickst…
Ja dann werden beide Initialisierungsblöcke durchlaufen.
Wichtig dabei ist, dass die Klasseninitialisierung nur einmal durchlaufen wird.
Und zwar genau dann, wenn die Klasse das aller erste Mal angesprochen wird.
Die Instanzinitialisierung wird aber bei jedem neuen Objekt durchlaufen.
Außerdem findet die Klasseninitialisierung vor der Objektinitialisierung statt.
Zusammenfassung:
- Java Klassen werden initialisiert. Das bedeutet, sie werden intern angelegt.
- Die ganze Java Klassen Initialisierung durchläuft zwei Phasen.
- In Phase 1 werden die Klassenvariablen angelegt und in Phase zwei werden ihnen die entsprechenden Werte zugewiesen.
Ähnliche Beiträge
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung, Java Variablen
Ja, ich fange sämtliche Artikel so an. Und du weißt es mittlerweile. Aber die Java Klassen stellen Baupläne für die Objekte dar, welche du erschaffen willst. Und in so einem Bauplan oder einer Gebrauchsanweisung brauchst du zwingend bestimmte Eigenschaften. Ich habe dir ja im letzten Artikel gezeigt, wie du eine […]
Schlagwörter: Eclipse Programmierung, Java Keyword, Java Klasse, Java Programmierung
Es macht durchaus Sinn deine Java Klassen in verschiedenen Paketen zu organisieren. Wieso? Es sprechen mehrere Gründe dafür: Du kannst doppelte Klassennamen verwenden Du kannst deinen Code oder deine Klassen inhaltlich trennen Du kannst Hierarchien abbilden. Und genau um diese Dinge geht es in diesem Beitrag
Schlagwörter: Java Instanzen, Java Klasse
Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.
Schlagwörter: Java Klasse, Java Vererbung
Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du […]
Schlagwörter: Java Instanzen, Java Klasse, Java Vererbung
Java Vererbung hat nichts mit Biologie zu tun. Die Genetik besagt, dass bestimmte Merkmalsausprägungen von den Eltern auf die Kinder übergehen. Solche Merkmalsausprägungen sind: die Hautfarbe die Haarfarbe die spezifische Größe und weitere körperliche Merkmale. Und in Java – was ist da Vererbung? Lass es uns herausfinden. Was erwartet dich […]
Schlagwörter: Java Klasse
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 […]
Schlagwörter: Java Klasse, Java Programmierung
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 […]
Schlagwörter: Java Klasse, Java Vererbung
Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von […]
Schlagwörter: Java Klasse, Java Programmierung
Java ist eine objektorientierte Programmiersprache. Was heißt das? Ja… Anscheinend hat es etwas mit Objekten zu tun. Also was ist ein Objekt? Ein Objekt ist ein bestimmtes Konstrukt im Programm. Bauen wir ein Spiel. Ein Grafik-Adventure. Du kennst das. Ein Held wird in eine bestimmte Spielwelt hinein gesteckt. Der Held […]
Schlagwörter: Java Klasse, Java Programmierung
Java ist eine objektorientierte Programmiersprache und dieses Konzept setzt auf Java Klassen. Diese Aussage nimm bitte jetzt erst einmal so hin. Ich werde im Laufe des Artikels den Zusammenhang herstellen.
Schlagwörter: Java Instanzen, Java Klasse, Java Übungen
In dieser Java Übung, wirst du ein Objekt erstellen.
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung, Java Variablen
Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied zwischen […]
Schlagwörter: Java Instanzen, Java Klasse
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 […]
Schlagwörter: Java Instanzen, Java Klasse, Java Vererbung
Im letzten Beitrag habe ich dir das Java Vererbung Konzept an einem Beispiel vorgestellt. In dem Beispiel-Rollenspiel gab es Klassen zu Helden und Superhelden. Ich habe dir die Vererbungshierarchien theoretisch erläutert. Jetzt geht es ans Praktische. In diesen Beitrag lernst du: Wie du bestehende Java Klassen erweiterst Wie du Objekte […]
Schlagwörter: Eclipse Programmierung, Java Klasse, Java Programmierung
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 […]
Schlagwörter: Java Instanzen, Java Klasse, Java Methoden, Java Programmierung
In einen der letzten Beiträge habe ich dir gezeigt, wie du eine Klasse anlegen kannst. Ich habe die Klasse „Mensch“ oder „Human“ angelegt und wir haben die erste Instanzvariable implementiert. Dein Code sollte jetzt so aussehen: public class Human { int size=156;//size in centimeter } In diesem Beitrag werde ich […]
Schlagwörter: Java Klasse, Java Vererbung
Man kann 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 […]
Schlagwörter: Java Instanzen, Java Klasse, Java Programmierung
Lass uns jetzt ein paar Java Objekte erstellen. Im letzten Beitrag habe ich dir gezeigt, was nötig ist um ein Java Programm überhaupt zu starten. Ich habe dir gezeigt, wie du eine zweite Klasse anlegst und die main Methode implementierst. Du hast gesehen, dass die Anweisung, welche wir in die […]
Schlagwörter: Java Klasse, Java Methoden, Java Strings
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 […]
Schlagwörter: Java Klasse, Java Programmierung
Datum und Uhrzeit mit Java. – Wie geht das? Es gibt verschiedene Möglichkeiten das Datum und auch die Uhrzeit in Java darzustellen. Eine Möglichkeit bietet die Java Klasse Calendar. Lass uns einmal einen Blick hinein werfen.