Вы можете вызвать любой метод из внешнего класса с помощью Outer.this.method()
.
Но методы разрешаются во время выполнения, поэтому, если вы переопределили его в своем подклассе, только метод подкласса (Bar.a()
) может получить доступ к оригиналу (вызвав super.a()
).
Как вы, вероятно, обнаружили, вы не можете написать Bar.this.super.a()
- но даже если бы вы могли, это все равно дало бы вам Bar.a()
, а не Foo.a()
.