Zu den Aufzeichnungen der tutorials.de-Live-Workshops
Seite 2 von 6 ErsteErste 12345 ... LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
82
ZUGRIFFE
19108
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    @hammet:
    Ein Prinzip der objectorientierten Programmierung ist ja Polimorphie und dieses garantiert ja, dass die überschriebene initialize-Methode aufgerufen wird.
    Danach sollte man eigentlich was anderes erwarten, weil die aufgerufene initialize-Methode des Childs den String überschreibt.

    Grüße, D.
     
    "You could say that I was too lazy to calculate and so I invented the computer." -- Konrad Zuse

  2. #17
    Avatar von hammet
    hammet hammet ist offline himekishi
    Registriert seit
    Aug 2006
    Ort
    Bayern
    Beiträge
    334
    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!

  3. #18
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.329
    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

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  4. #19
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo,

    Es ist so, dass erst der super-Aufruf ausgeführt wird, bevor die Varialben der Klasse AusgabeChild deklariert werden.
    deklariert ist hier IMHO falsch. Initialisiert wäre richtig.

    Gruß Tom
     
    Java 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

  5. #20
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.329
    Falsch ausgedrückt. Sorry, aber hab ich ja schon gelöscht.
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  6. #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ß Tom
     
    Java 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

  7. #22
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.960
    Dann mach ich nochmal eins

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    public class Finally {
     
        public static String methodB() {
            try {
                return "methodB";
            } finally {
                System.out.println("finally block");
            }
        }
     
        public static void main(String[] args) {
            System.out.println(methodB());
        }
    }

    Was ist davon die Ausgabe?
    Geändert von zeja (22.06.08 um 16:32 Uhr) Grund: Ausgabe indeterministisch
     

  8. #23
    maesi maesi ist offline Mitglied
    Registriert seit
    Feb 2005
    Beiträge
    15
    Achtung Spoiler:

    finally block
    methodB
     
    Wenn den Pferd tot ist ....
    .... steig ab.

  9. #24
    AAF AAF ist offline Mitglied
    Registriert seit
    Mar 2007
    Ort
    Luzern (Luzern)
    Beiträge
    14
    bin auch für mäsis antwort
     
    Schöne Grüsse aus der Schweiz,

    Adrian Ambros Frey

  10. #25
    Kai008 Kai008 ist offline Mitglied Brillant
    Registriert seit
    May 2008
    Ort
    Brunn/Geb. (Niederösterreich)
    Beiträge
    944
    Blog-Einträge
    1
    Achtung 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)
     

  11. #26
    AAF AAF ist offline Mitglied
    Registriert seit
    Mar 2007
    Ort
    Luzern (Luzern)
    Beiträge
    14
    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
    Bigmemo bedankt sich. 
    Schöne Grüsse aus der Schweiz,

    Adrian Ambros Frey

  12. #27
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.960
    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.
     

  13. #28
    limago limago ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Riedstadt (Hessen)
    Beiträge
    354
    Wer weiss Vorrangregeln von Operatoren auswendig?

    Was erzeugt der folgende Code?
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
     
    package de.tutorials;
     
    public class PlusPlus {
     
        public static void main(String[] args) {
            int a,b,c;
            
            a = b = 1;
            c = a+++b;
            
            System.out.println("a=" + a);
            System.out.println("b=" + b);
            System.out.println("c=" + c);
     
        }
     
    }

    Preincrement von b, oder Postincrement von a. Das ist für die Werte entscheidend.
     
    I didn't write this; a very complex macro did.

  14. #29
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.724
    Blog-Einträge
    29
    Hallo,

    Achtung Spoiler:

    Was erzeugt der folgende Code?
    Eine Ausgabe auf stdout. scnr ... Fragen bitte ein wenig eindeutiger Formulieren

    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ß Tom
     
    Java 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

  15. #30
    limago limago ist offline Mitglied Brokat
    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

  1. Rätsel
    Von Layna im Forum Smalltalk
    Antworten: 5
    Letzter Beitrag: 18.11.04, 19:11
  2. Rätsel
    Von Olli-Web im Forum Fun-Forum
    Antworten: 6
    Letzter Beitrag: 01.05.04, 14:27
  3. Rätsel
    Von reBourne im Forum Smalltalk
    Antworten: 6
    Letzter Beitrag: 30.09.03, 13:23
  4. 3 Rätsel
    Von mslap im Forum Fun-Forum
    Antworten: 5
    Letzter Beitrag: 07.08.03, 11:35
  5. Ist mir ein Rätsel
    Von Eric25 im Forum HTML-Editoren
    Antworten: 3
    Letzter Beitrag: 25.04.02, 09:03