5

隐藏静态字段时,该字段在子类中的访问级别没有限制,甚至可以是非静态的,也可以是其他数据类型。

另一方面,当隐藏静态方法时,子类的静态方法对超类隐藏静态方法可以允许比隐藏方法更多但不能更少的访问。

AFAIK,静态方法链接无论如何都是在编译时完成的,那么为什么会有这样的限制呢?

PS这个问题只是出于好奇。

4

1 回答 1

-2

因为在子类中,您覆盖了非私有超类方法,但覆盖了影子字段。至于设置更广泛的访问级别 - 你总是可以写类似的东西

public void sublcassMethod() {
    supersecretSuperclassMethod();
}

因此,在语言级别通过更广泛的访问来限制覆盖是没有意义的 - 这种限制可以很容易地实现

于 2015-12-19T03:33:20.560 回答