ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
419
419
EMPFEHLEN
-
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!
-
24.08.11 15:44 #2
Hi Kranik und herzlich Willkommen bei Tutorials,
also zu deiner Frage. Der Konstruktor wird deshalb zuerst aufgerufen, da über diesen die Superklasse geladen wird. Sprich wenn die Superklasse Parameter zum Aufrufen braucht, müssen diese schließlich über den Konstruktor via super(Parameter1, Parameter2) übergeben werden.
Ich habe mir angewöhnt die Variablen über dem Konstruktor zu definieren sprich:
und im Konstruktor initialisiere ich sie dann:Code java:1
private int variable;
Code java:1 2 3 4
public DeinKlassenName() { // super(); <-- steht in jedem Konstruktor (nicht immer sichtbar) zum Aufruf der Superklasse this.variable = 4; }
ps.: Benutze bitte das nächste mal bei Posts von Code die Code-Tags (java), Danke
Gruß
FabioGeändert von Fabio Hellmann (24.08.11 um 16:11 Uhr)
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
Hallo Fabio,
Danke für das Herzliche willkommen! und natürlich auch für die super schnelle Antwort.
Macht ja auch irgendwie Sinn, dass erst der Typ der SuperKlasse erstellt wird.
ok werd ich dran denken die Code-Tags zu werwenden
gruß Kranik
p.s. kann geschlossen werden, hmm oder geht das bei euch über den Button "Erledigt"
hmm testen
Geändert von Kranik (25.08.11 um 08:02 Uhr)
-
25.08.11 08:02 #4
ps.: Um das Thema zu schließen, musst du einfach oben neben den Aufruf- und Antwortenzähler, auf: Erledigt "NEIN" klicken. Dann wird das zu einem "JA" und das Thema wird als erledigt markiert.
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
Ähnliche Themen
-
Ablauf automatisieren
Von Merlin732 im Forum Creative LoungeAntworten: 4Letzter Beitrag: 05.05.06, 15:14 -
intuitive Objekterstellung
Von NEONINGER im Forum Cinema 4DAntworten: 5Letzter Beitrag: 10.02.06, 12:53 -
ssl logischer ablauf
Von bspainkf36 im Forum Hosting & WebserverAntworten: 5Letzter Beitrag: 27.01.06, 03:47 -
Ein Ablauf
Von peter333 im Forum C/C++Antworten: 6Letzter Beitrag: 04.05.05, 21:29 -
Hilfsleiste mit Objekterstellung einblenden aber wie ?
Von -[4]L!F3- im Forum 3D Studio MaxAntworten: 2Letzter Beitrag: 17.01.02, 17:19





Zitieren
Login





