[英]Overriding methods from different classes in java
与实例的超类相同的包中的子类可以覆盖未声明为私有或最终的任何超类方法。
不同包中的子类只能覆盖声明为public或protected的非最终方法。
但是有什么区别呢?如果一个方法没有被声明为私有方法,那么它必须是公共的或没有保护的?
这一点可以改写为: 您只能覆盖类可以访问的方法,并且此方法不是final的 。
因此,如果要在放置基类(或接口)的包外部创建类,则只能覆盖非最终的公共方法和受保护的方法。
如果派生类与基类在同一包中,则您也可以覆盖没有访问修饰符(受包保护)的非最终方法。
您永远不能覆盖私有方法。
其实没有
方法可以是public,protected,private或package private 。 如果您未指定访问修饰符,则该方法是包私有的。
很明显,为什么来自其他程序包的类不能覆盖程序包私有成员。
区别在于default
(或package-private
)访问修饰符。 如果您未指定访问修饰符,则只有同一包中的其他类可以访问它,无论它们是否是子类。
有关更多信息: http : //docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.