[英]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.