如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 ();
}
}
我没有看到上述方法有任何特别的问题——它只是和静态的(允许的)隐藏一样“混乱/复杂”。