super bezieht sich auf welche hierarchische Ebene?

Mik3e

Erfahrenes Mitglied
Hi!

Kurze Frage: Auf welche hierarchische Ebene bezieht sich super?

Beispiel:
Code:
Klasse A
Methode M
    Klasse B extends A
    Methode M
        Klasse C extends B
        Methode M
        super.M();

Wird in diesem Fall (Überlagerung) in Klasse C die Methode M von Klasse A, oder die Methode M von Klasse B aufgerufen? (bezieht sich super also immer auf die direkte Superklasse oder auf die "höchste" Superklasse? Die Frage bezieht sich natürlich auch auf alle anderen "Superangelegenheiten" (z.B. Objektinstanzierungen)

Wenn ich mit super immer die direkte Vaterklasse anspreceh, wie komme ich beispielsweise dann an die Membervariablen (oder Methoden) der höchsten Klasse ran

Aufruf in Klasse C:
super.super.M() <------------?

Danke & LG
Mike
 
Zuletzt bearbeitet:
Super bezieht sich auf die direkte Elternklasse. In deinem Beispiel würde die Methode M von B aufgerufen werden. Ein Aufruf von M von A ist von C aus nicht möglich.
Soweit zur Theorie - probier's doch einfach aus :)
 
Zuletzt bearbeitet:
Es gibt also keine Möglichkeit, auf Elemente einer Vaterklasse n-ter Ebene zuzugreifen? Sondern immer nur auf die erste (Also sowas wie super.super.super.methode(); ist nicht möglich!?)
 
Hm, ja es wird der Konstruktor der direkten Elternklasse aufgerufen, aber dieser kann doch wieder den Elternklassenkonstruktor aufrufen.

Code:
class A {

    A(String s) {
       System.out.println(s);
    }

    class B extends A {

         B(String s) {

             super(s);
         }


        class C extends B {

             C() { super("Hallo Welt"); }
        }
    }
}
 
Guten morgen!

Ja, das stimmt.. Bringt aber nur etwas beim Konstruktor.
Bei einer "normalen" Methode ist es eher mühsam... Obwohl ich mir nicht sicher bin, ob das überhaupt jemals gebraucht wird, da die Methode ja sowieso mitvererbt wird...
 
Zurück