Mon*_*eur 21 java inheritance overriding visibility
当我用protected方法覆盖方法时,Java编译器不会抱怨public.这里到底发生了什么?它是否覆盖或隐藏父方法,因为父方法的可见性较低?
protected
public
Har*_*ezz 34
子类总是可以加宽访问修饰符,因为它仍然是超类的有效替换.从关于覆盖和隐藏要求的Java规范:
覆盖或隐藏方法的访问修饰符(第6.6节)必须至少提供与重写或隐藏方法一样多的访问权限,如下所示: 如果重写或隐藏方法是公共的,则覆盖或隐藏方法必须是公共的; 否则,发生编译时错误. 如果被覆盖或隐藏的方法受到保护,则覆盖或隐藏方法必须受到保护或公开; 否则,发生编译时错误. 如果重写或隐藏方法具有默认(包)访问权限,则覆盖或隐藏方法不得为私有方法; 否则,发生编译时错误.
覆盖或隐藏方法的访问修饰符(第6.6节)必须至少提供与重写或隐藏方法一样多的访问权限,如下所示:
归档时间:
11 年,6 月 前
查看次数:
13569 次
最近记录: