java扩展静态方法,无法编译,为什么?

用户名
class Base {
    public static void f(){}
}
class Derived extends Base{
    private static void f(){}
}

Derived.f()的修饰符必须是公共的,如果它是私有的,则编译器会说“试图分配较弱的访问权限;是公共的”
我听不懂!为什么编译器不允许我们这样做?

安吉特·特里帕蒂(Ankit Tripathi)

静态方法不能被覆盖,静态方法只能被子类隐藏,方法的可访问性与隐藏无关。仅实例方法可以被覆盖,但基于签名和两种情况下的方法都可以被隐藏或覆盖。应该是相同的。无论继承方法是隐藏的还是重写的,您都无法降低其可访问性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章