class Base {
public static void f(){}
}
class Derived extends Base{
private static void f(){}
}
Derived.f()的修饰符必须是公共的,如果它是私有的,则编译器会说“试图分配较弱的访问权限;是公共的”。
我听不懂!为什么编译器不允许我们这样做?
静态方法不能被覆盖,静态方法只能被子类隐藏,方法的可访问性与隐藏无关。仅实例方法可以被覆盖,但基于签名和两种情况下的方法都可以被隐藏或覆盖。应该是相同的。无论继承方法是隐藏的还是重写的,您都无法降低其可访问性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句