Вы можете получить доступ к методам суперкласса из самого подкласса, например,
class A {
void foo() {...}
}
class B extends A {
void foo() {...}
void defaultFoo() { super.foo(); }
}
Тем не менее, вы действительно не должны раскрывать переопределенные методы таким образом, вы должны написать B.foo()
таким образом, чтобы он хорошо работал для A и B. Вот где - это хорошая идея используйте super.foo();
вот так:
class B extends A {
void foo() {
super.foo(); //call superclass implementation first
... //do stuff specific to B
}
}
Обновление: В ответ на ваш комментарий о попытке доступа к реализации на 2 уровня выше, вот способ сделать это.
class A {
void foo() {
defaultFoo();
}
protected void defaultFoo() { ... }
}
class B extends A {
void foo() {...}
}
class C extends B {
void foo() {
defaultFoo();
... //do other stuff
}
}
Это более здоровая схема кодирования того, что вы хотите сделать.