- Java程序員面試筆試寶典(第2版)
- 何昊等編著
- 653字
- 2022-06-17 16:00:43
1.7 Overload和Override的區別
Overload(重載)和Override(覆蓋)是Java多態性的不同表現。其中,Overload是在一個類中多態性的一種表現,是指在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型。在使用重載時,需要注意以下幾點:
1)重載是通過不同的方法參數來區分的,例如不同的參數個數、不同的參數類型或不同的參數順序。
2)不能通過方法的訪問權限、返回值類型或拋出的異常類型來進行重載。
3)對于繼承來說,如果基類方法的訪問權限為private,那么就不能在派生類中對其重載,如果派生類也定義了一個同名的方法,但這只是一個新的方法,不會達到重載的效果。
Override是指派生類函數覆蓋基類函數。覆蓋一個方法并對其重寫,以達到不同的作用。在使用覆蓋時需要注意以下幾點:
1)派生類中的覆蓋的方法必須要和基類中被覆蓋的方法有相同的方法名和參數。
2)派生類中的覆蓋方法的返回值必須和基類中被覆蓋方法的返回值相同。
3)派生類中的覆蓋方法所拋出的異常必須和基類中被覆蓋的方法所拋出的異常一致或是其子類。
4)基類中被覆蓋的方法不能為private,否則其子類只是定義了一個方法,并沒有對其覆蓋。
重載與覆蓋的區別主要有以下幾個方面的內容:
1)覆蓋是子類和父類之間的關系,是垂直關系;重載是同一個類中方法之間的關系,是水平關系。
2)覆蓋只能由一個方法或只能由一對方法產生關系;方法的重載是多個方法之間的關系。
3)覆蓋要求參數列表相同;重載要求參數列表不同。
4)覆蓋關系中,調用方法體是根據對象的類型(對象對應存儲空間類型)來決定的;而重載關系是根據調用時的實參表與形參表來選擇方法體的。
推薦閱讀
- 精通搜索分析
- NumPy Essentials
- Cassandra Design Patterns(Second Edition)
- Microsoft System Center Orchestrator 2012 R2 Essentials
- Python時間序列預測
- Vue.js 2 Web Development Projects
- Learning Material Design
- Python Data Science Cookbook
- 寫給程序員的Python教程
- Arduino可穿戴設備開發
- Flink技術內幕:架構設計與實現原理
- Application Development with Swift
- 從零開始:C語言快速入門教程
- Koa與Node.js開發實戰
- Java Web應用開發