super



  • hallo

    in einer abgeleiteten Klasse möchte ich einen Wert aus der Vaterklasse auslesen. wie kann ich dies machen? mit super klappt das bei mir nicht so ganz.

    class Time
    {
    
      int Hour,Minute,Sec;
    }
    class Weltzeit extends Time
    int temp=-1;
    
    //und jetzt möchte ich Hour Minute und Sec aus der Klasse Time Anzeigen
    


  • mach die variablen protected, dann stehen sie in der subklasse als ganz normale variablen zur verfügung:

    [java]
    class Time
    {
    protected int Hour,Minute,Sec;
    }

    class Weltzeit extends Time
    {
    public void irgendwas()
    {
    Hour = 12;
    }
    }[/code]

    alternativb baust du in die Klasse Time get/ste-methoden, bzw. wenn die kalsse ausm java-pack ist, hat die garantiert welche, so dass du einfach getHour/steHour etc. aufrufen kannst



  • ja das schon aber wie kann ich die Werte aus der Vaterklasse auslesen.
    denn in der subklasse möchte ich mit den Werten der Vaterklasse arbeiten

    [ Dieser Beitrag wurde am 01.04.2002 um 14:30 Uhr von stef editiert. ]



  • mit super, wie du schon sagtest. Aber mal ne andere Frage: Wozu schreibst Du eine eigene Zeit-Klasse, sowas gibs doch schon?



  • nein das nur ein probebeispiel. aber das mit super klappt bei mir eben nicht so ganz wenn ich mit super.Hour die stunden aus der Vaterklasse auslesen möchte ist der Wert immer 0.



  • Du arbeitest in meinem Beispiel automatisch mit den Werten dert vaterklasse...es sie denn du überschreibst die Variablen, was diene Frage abe rnihct vermuten lässt. der Witz der Vererbung ist ja gerade, dass wenn B extends A, dann hat B alle Eigenscvhaften von A, also auch dessen Variablen



  • das mit dem Vererben ist mir schon klar. ich bin mir nur nicht sicher ob auch die Werte die in den Variablen sind auch übergeben werden.



  • Nein das werden sie nicht - es sei denn es handelt sich um solche die static sind. Jedes Objekt B welches in seiner Klassendefinition von A abgeleitet worden ist besitzt zwar die öffentlichen Eigenschaften von A jedoch hat ein Objekt vom Typ B stets andere "Inhalte" wie ein Objekt A. Daraus ergibt sich:

    B ist ähnlich A ABER nicht B ist gleich A

    Als Beispiel:

    class A {
         public static int staticMember_1 = 12;
         public static int staticMember_2 = 25;
         public int member_1 = 123;
    
         public int getMember1() {
              return member_1;
         }
    }
    
    public class B extends A {
         public B() {
              System.out.println("member_1 = " + getMember1());
         }
         public static void main (String args[]) {
              B theB = new B();
              System.out.println("staticMember_1 = " + staticMember_1);
              System.out.println("staticMember_2 = " + staticMember_2);
         }
    }
    


  • jetzt ist mir alles klar. mein fehler war das ich die Variablen nicht als static definiert habe.
    danke
    mfc stefan


Anmelden zum Antworten