-
17.06.08 14:45 #16
- Registriert seit
- Nov 2001
- Ort
- Gießen
- Beiträge
- 4.091
@hammet:
Danach sollte man eigentlich was anderes erwarten, weil die aufgerufene initialize-Methode des Childs den String überschreibt.Ein Prinzip der objectorientierten Programmierung ist ja Polimorphie und dieses garantiert ja, dass die überschriebene initialize-Methode aufgerufen wird.
Grüße, D."You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse
-
Wird sie ja. Nur Initialisiert Java den AusgabeString als null und führt die Wertzuweisung erst nach den Init-Methoden durch. Die Zuweisung in der Child-Initialize-Methode ändert den Wert vom AusgabeString von null in den den gewünschten Text. Aber wie schon gesagt, wird die Wertzuweisung global erst nach den Initalisierungen vorgenommen.
Geändert von hammet (17.06.08 um 14:51 Uhr)
Handlanger des Dr. Ex1tus
Ich kenne Matzes dunkles Geheimnis ! oO
o
L_/
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat.
Hallo Nuray!
-
Hammet hat es ganz genau getroffen. Da brauche ich gar nicht mehr aufzulösen.

Ich hätte im Konstruktor nicht mal super aufrufen müssen, da der Standard-Kontruktor (wenn vorhanden) der Parent-Klasse sowieso aufgerufen werden würde.
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
17.06.08 14:56 #19
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
deklariert ist hier IMHO falsch. Initialisiert wäre richtig.Es ist so, dass erst der super-Aufruf ausgeführt wird, bevor die Varialben der Klasse AusgabeChild deklariert werden.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Falsch ausgedrückt.
Sorry, aber hab ich ja schon gelöscht.
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
17.06.08 15:10 #21
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
verdeutlichen kann man sich das wie folgt:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
/** * */ package de.tutorials; /** * @author Thomas.Darimont * */ public class InitializationExample { /** * @param args */ public static void main(String[] args) { new B(); } static class A{ A(){ System.out.println("Constructor A"); intialize(); } void intialize(){ System.out.println("Initialize A"); } } static class B extends A{ String value =init("yyy"); B(){ System.out.println("Constructor B"); System.out.println(value); } void intialize(){ super.intialize(); value = init("xxx"); } } static String init(String string){ System.out.println("Init: " + string); return string; } }
Ausgabe:
Code :1 2 3 4 5 6
Constructor A Initialize A Init: xxx Init: yyy Constructor B yyy
Die Instanzvariablen einer Instanz werden erst (automatisch) initialisiert, nachdem der Konstruktor der Basisklasse aufgerufen worden ist. Ebenso werden auch Instanz Initialisierer Blocks nach dem Aufruf des Basisklassen Konstruktors ausgeführt, in der Reihenfolge in der Sie im Code auftauchen. Anschließend wird der eigentliche Konstruktor ausgeführt.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
/** * */ package de.tutorials; /** * @author Thomas.Darimont * */ public class InitializationExample { /** * @param args */ public static void main(String[] args) { new B(); } static class A{ A(){ System.out.println("Constructor A"); intialize(); } void intialize(){ System.out.println("Initialize A"); } } static class B extends A{ { System.out.println("Instance Initializer B 0"); } B(){ System.out.println("Constructor B"); System.out.println(value); } String value =init("yyy"); { System.out.println("Instance Initializer B 1"); } void intialize(){ super.intialize(); value = init("xxx"); } } static String init(String string){ System.out.println("Init: " + string); return string; } }
Ausgabe:
Code :1 2 3 4 5 6 7 8
Constructor A Initialize A Init: xxx Instance Initializer B 0 Init: yyy Instance Initializer B 1 Constructor B yyy
Weitere Beispiele zur Initialisierung:
http://www.tutorials.de/forum/1040519-post3.html
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Dann mach ich nochmal eins

Code java:
Was ist davon die Ausgabe?Geändert von zeja (22.06.08 um 16:32 Uhr) Grund: Ausgabe indeterministisch
-
Achtung Spoiler:
finally block
methodB
Wenn den Pferd tot ist ....
.... steig ab.
-
bin auch für mäsis antwort
Schöne Grüsse aus der Schweiz,
Adrian Ambros Frey
-
29.06.08 19:12 #25Achtung Spoiler:
"methodB"?
Weiß zwar nicht was finally genau bewirkt, aber soweit ich weiß kommt bei einer static jedes mal der selbe Returnwert oder so, was auch immer das für einen Sinn haben mag.
€: Ups, auf Spoiler vergessen.
@AAF: Danke, aber editiere bitte das Zitat raus.Geändert von Kai008 (30.06.08 um 01:46 Uhr)
-
Achtung Spoiler:
@Kai0008
finally wird nach try-catch immer ausgeführt, auch dann wenn catch in kraft tritt.
Geändert von zeja (04.07.08 um 19:40 Uhr) Grund: In Spoiler eingeschlossen und Zitat entfernt
Schöne Grüsse aus der Schweiz,
Adrian Ambros Frey
-
Achtung Spoiler:
@Kai008
"aber soweit ich weiß kommt bei einer static jedes mal der selbe Returnwert oder so, was auch immer das für einen Sinn haben mag."
Wo hast du dass denn aufgeschnappt? static an einer Methode bedeutet nur dass es nicht abhängig von einer Instanz der Klasse ist sondern direkt mit Klasse.methode aufgerufen werden kann. Kann man für Methoden nutzen die auf keinen Zustand angewiesen sind.
-
10.07.08 19:31 #28
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
Wer weiss Vorrangregeln von Operatoren auswendig?
Was erzeugt der folgende Code?
Code java:
Preincrement von b, oder Postincrement von a. Das ist für die Werte entscheidend.I didn't write this; a very complex macro did.
-
10.07.08 19:40 #29
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.724
- Blog-Einträge
- 29
Hallo,
Achtung Spoiler:
Eine Ausgabe auf stdout. scnr ... Fragen bitte ein wenig eindeutiger FormulierenWas erzeugt der folgende Code?
a+++b -> (a++) + b
a++ gibt a zurück und erhöht a im nächsten Schritt um 1
also wird
c = 1 + 1 = 2
Hab richtig geraten
a=2
b=1
c=2
Was ist die Ausgabe des Beispielcodes unter:
http://www.tutorials.de/forum/1630760-post5.html
und warum?
Hätte wohl noch ein wenig länger warten sollen... aber es juckte mich gerade so in den Fingern... vielleicht sollten wir eine Antwortfrist für Mods einführen. Erst nachdem ein Rätsel 2 Tage nicht korrekt beantowrtet wurde darf ein mod sich offiziell daran versuchen....
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
10.07.08 20:01 #30
- Registriert seit
- May 2007
- Ort
- Riedstadt (Hessen)
- Beiträge
- 354
Du hast recht. Dein Rätsel ist knifflig. Werde knobeln....
I didn't write this; a very complex macro did.
Ähnliche Themen
-
Rätsel
Von Layna im Forum SmalltalkAntworten: 5Letzter Beitrag: 18.11.04, 19:11 -
Rätsel
Von Olli-Web im Forum Fun-ForumAntworten: 6Letzter Beitrag: 01.05.04, 14:27 -
Rätsel
Von reBourne im Forum SmalltalkAntworten: 6Letzter Beitrag: 30.09.03, 13:23 -
3 Rätsel
Von mslap im Forum Fun-ForumAntworten: 5Letzter Beitrag: 07.08.03, 11:35 -
Ist mir ein Rätsel
Von Eric25 im Forum HTML-EditorenAntworten: 3Letzter Beitrag: 25.04.02, 09:03



4Danke

Zitieren



Login




