Как показано в http://docs.oracle.com/javase/tutorial/java/IandI/override.html, Java разрешает
- Переопределение метода экземпляра методом экземпляра и
- Скрытие статического метода статическим методом
Мой вопрос в том, почему Java не позволяет скрывать метод статического суперкласса методом экземпляра. Это можно сделать следующим образом:
class Base {
static void foo () {}
}
class Derived extends Base {
void foo () {}
void access () {
foo ();
Base.foo ();
}
}
Я не вижу какой-либо конкретной проблемы с вышеупомянутым подходом - это только как "грязный/сложный", поскольку уже допустимое скрытие статики уже есть.