Ich hoffe, dieser Code erklärt das Problem:
%Vor%Ich weiß, dass ich vielleicht etwas falsch mache, weil die Vererbung vielleicht nicht so verwendet werden sollte. Aber es ist der einfachste Weg in meiner Situation. Und außerdem bin ich nur neugierig. Ist es möglich?
Bar.super.a()
scheint zu funktionieren.
Nach JLS Abschnitt 15.12
Klassenname super. NonWildTypeArguments_opt Kennung (ArgumentList_opt)
ist eine gültige MethodInvocation
Sie können jede Methode der äußeren Klasse mit Outer.this.method()
aufrufen.
Aber Methoden werden zur Laufzeit aufgelöst. Wenn Sie sie in Ihrer Unterklasse überschrieben haben, kann nur die Unterklassenmethode ( Bar.a()
) auf das Original zugreifen (indem Sie super.a()
aufrufen).
Wie Sie wahrscheinlich herausgefunden haben, können Sie nicht Bar.this.super.a()
schreiben - aber selbst wenn Sie könnten, würde es Ihnen trotzdem Bar.a()
, nicht Foo.a()
geben.
Tags und Links java inheritance