1. 程式人生 > >關於Java中方法重寫的訪問修飾符和返回值型別的限制

關於Java中方法重寫的訪問修飾符和返回值型別的限制

眾所周知,Java中方法重寫的要求是方法簽名完全相同。

方法簽名是指 方法名+引數列表 。

而父類中或介面中的方法的時候重寫方法的時候,除了方法簽名完全相同之外,訪問修飾符和返回值型別有什麼限制嗎?

答案是肯定的。

訪問修飾符的開放範圍由大到小排序是 public > protected > default > private

private型別是子類無法繼承下來的,  所以父類中private修飾的方法並不能被子類重寫。

廢話不多說,接下來進入重點。

經過筆者的多次測試,發現訪問修飾符和返回值型別雖然不必與父類中的方法相同,但也不是完全沒有限制。

方法重寫時:

子類中方法的訪問修飾符必須 >= 父類中對應方法的訪問修飾符  (訪問修飾符大小關係已在本文中列出)

子類中方法的返回值型別可以和被重寫方法的返回值型別相同,或者是被重寫方法型別的子型別。

即   子類中方法的返回值型別必須 <=  父類中對應方法的返回值型別

以上結論對於抽象方法的實現同樣適用。

因為在JDK1.7及以前的版本中,介面中所有的方法都預設是public型別的。所以說介面中的方法被重寫時,其子類重寫方法的訪問修飾符必須是public.

由於筆者水平有限,還請大家多多批評指正。得意