JAVA:方法重寫和方法過載的區別
阿新 • • 發佈:2018-11-11
過載
定義:在同一類中兩個或者多個方法的重寫
規則:
方法名 相同 |
引數列表 不同 (個數,型別,引數順序) |
返回型別 可以相同也可以不同 |
方法的返回型別不同不足以成為方法的過載 |
過載是發生在 |
重寫
定義:有繼承關係在子類中發生
規則:
方法名 相同 |
引數列表 相同 |
返回值型別 可以相同也可以是原型別的子型別 |
訪問性 重寫方法不能比原方法訪問性差 |
異常 重寫方法不能比原方法丟擲異常多 |
final型別 被final修飾的不能重寫 |
private 被private修飾的不能重寫 |
static 被static修飾的不能重寫 |
重寫發生在執行時,因為編譯期編譯器不知道並且沒辦法確定該去呼叫哪個方法,JVM會在程式碼執行的時候做出決定 |
過載和重寫的不同:
過載 | 重寫 | |
使用條件 | 同一類 | 繼承關係,子類中 |
引數列表 | 不同 | 相同 |
返回型別 | 可同可不同 | 相同 |
訪問許可權 | 無要求 | 有特殊要求,見規則 |
次數限制 | 過載多次 | 父類方法只能被子類重寫一次 |
作用時間 | 編譯期 | 執行期 |