Hallo zusammen,
ich hab eine Frage warum bei ableitenden Klassen die Initialisierungsreihenfolge anders ist als bei "normalen" Klassen (ja ich weiss diese haben ja auch wiederum Object als Superklasse.. aber sie leiten halt nicht von selbst erzeugten Klassen ab).
Wenn ich eine neue Instanz einer Klasse erstelle die wie folgt aussieht:
public class SuperClass {
String string = new String("global");
/**
* Constructor
*/
public SuperClasse() {
init();
}
public void init() {
System.out.println(string);
string = "ich bin da!";
System.out.println(string);
}
}
wird folgendes ausgegeben:
1)global
2)lokal
3) nach dem erstellen des Objekts hat die variable -string- den wert "lokal"
erstelle ich jetzt eine Ableitung der Klasse wie folgt und erzeuge eine Instanz davon:
public class Ableitung extends SuperClass {
String string2 = new String("global");
/**
* Constructor
*/
public Ableitung() {
super();
}
/**
* {@inheritDoc}
*/
@Override
public void init() {
System.out.println(string2);
string2 = "lokal";
System.out.println(string2);
}
}
lautet die Reihenfolge:
1)null
2)lokal
3) nach dem erstellen hat die Variable -string2- den wert "global"
Ich hätte jetzt erwartet, dass die JVM erst die Variablen erzeugt und die Zuweisungen macht und dann den Constructor aufruft! Warum ist dem nicht so?
Ich hoffe mir kann da wer weiterhelfen! danke schonmal im Vorraus!
ich hab eine Frage warum bei ableitenden Klassen die Initialisierungsreihenfolge anders ist als bei "normalen" Klassen (ja ich weiss diese haben ja auch wiederum Object als Superklasse.. aber sie leiten halt nicht von selbst erzeugten Klassen ab).
Wenn ich eine neue Instanz einer Klasse erstelle die wie folgt aussieht:
public class SuperClass {
String string = new String("global");
/**
* Constructor
*/
public SuperClasse() {
init();
}
public void init() {
System.out.println(string);
string = "ich bin da!";
System.out.println(string);
}
}
wird folgendes ausgegeben:
1)global
2)lokal
3) nach dem erstellen des Objekts hat die variable -string- den wert "lokal"
erstelle ich jetzt eine Ableitung der Klasse wie folgt und erzeuge eine Instanz davon:
public class Ableitung extends SuperClass {
String string2 = new String("global");
/**
* Constructor
*/
public Ableitung() {
super();
}
/**
* {@inheritDoc}
*/
@Override
public void init() {
System.out.println(string2);
string2 = "lokal";
System.out.println(string2);
}
}
lautet die Reihenfolge:
1)null
2)lokal
3) nach dem erstellen hat die Variable -string2- den wert "global"
Ich hätte jetzt erwartet, dass die JVM erst die Variablen erzeugt und die Zuweisungen macht und dann den Constructor aufruft! Warum ist dem nicht so?
Ich hoffe mir kann da wer weiterhelfen! danke schonmal im Vorraus!
