天天看點

Java中方法的重載與重寫

方法的重寫Overriding和重載Overloading是Java多态性的不同表現。

重載(overload)

方法的重載是針對一個類中的方法。在一個類中,可以存在多個名字相同的方法,這些方法的形參清單(參數類型和參數個數)互不相同,傳回值類型可同可不同,調用時根據參數清單調用對應的方法。這就是方法的重載。

注意:

(1)方法名必須相同。

(2)形式參數個數不同或者參數類型不同(滿足其中一個條件就行)。

重寫(override)

方法的重寫是針對子類與父類的,涉及繼承。子類繼承了父類,但是在子類的定義中顯示的修改了父類已有方法的定義,即子類重新改寫了父類中已經存在的某些方法,子類隻是修改了父類方法的定義,保持了父類方法頭不變。

注意:

(1)通路修飾符權限一定要大于被重寫的方法。(當被重寫的方法被私有(private)時無法重寫)。

       權限:public>protected>default>private

(2)當被重寫的方法一旦被final時也無法重寫,如果編譯會報錯。

(3)傳回值類型必須相同。

(4)參數清單必須與被重寫的方法完全相同。

(5)重寫方法一定不能抛出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常

   如:父類的一個方法申明了一個檢查異常IOException,在重寫這個方法是就不能抛出Exception,隻能抛出IOException的子類異常,可以抛出非檢查異常。

  綜:具有相同的方法名、傳回類型和參數表,會被重寫

  注:如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了目前類的父類