重載和重寫的差別 子類中不能重寫父類中的final方法 子類中必須重寫父類中的abstract方法 重載(Overloading) Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法 ...
重載和重寫的差別
- 方法重載是指在同一個類中,有多個方法名相同的參數列表不同的方法
- 方法重寫是指在繼承關係中,子類有和父類方法名相同的、參數列表相同並且返回值類型也相同的方法
- 子類中不能重寫父類中的final方法
- 子類中必須重寫父類中的abstract方法
重載(Overloading)
- 方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。
-
Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。
- 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標準。
重寫(Overriding)
- 如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
-
若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
- 訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)
- 重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。
總結
override(重寫)
- 方法名、參數、返回值相同。
- 子類方法不能縮小父類方法的訪問許可權。
- 子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。
- 存在於父類和子類之間。
- 方法被定義為final不能被重寫。
overload(重載)
- 參數類型、個數、順序至少有一個不相同。
- 不能重載只有返回值不同的方法名。
- 存在於父類和子類、同類中。
2018-03-12
如果有哪裡不對的懇請指正