为什么Java限制隐藏方法的访问修饰符

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

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

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

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

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

 public void sublcassMethod() { supersecretSuperclassMethod(); } 

所以在语言层面上限制覆盖更广泛的访问是没有意义的 – 这种限制很容易实现