<分区>
隐藏静态字段时,该字段在子类中的访问级别没有限制,甚至可以是非静态的和其他数据类型。
另一方面,当隐藏静态方法时,隐藏父类(super class)静态方法的子类静态方法可以允许比隐藏方法更多而不是更少的访问。
据我所知,静态方法链接无论如何都是在编译时完成的,那么为什么会有这样的限制?
附言这个问题只是出于好奇。
<分区>
隐藏静态字段时,该字段在子类中的访问级别没有限制,甚至可以是非静态的和其他数据类型。
另一方面,当隐藏静态方法时,隐藏父类(super class)静态方法的子类静态方法可以允许比隐藏方法更多而不是更少的访问。
据我所知,静态方法链接无论如何都是在编译时完成的,那么为什么会有这样的限制?
附言这个问题只是出于好奇。
最佳答案
因为在子类中你重写了非私有(private)父类(super class)方法但是隐藏了字段。至于设置更广泛的访问级别——你总是可以这样写
public void sublcassMethod() {
supersecretSuperclassMethod();
}
因此在语言级别限制覆盖更广泛的访问是没有意义的——这样的限制很容易实现
关于java - 为什么Java要限制隐藏方法的访问修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34365337/