區分多態與重載
多態是基於對抽象方法的覆蓋來實現的,用統一的對外接口來完成不同的功能。重載也是用統一的對外接口
來完成不同的功能。那麼兩者有什麼區別呢?
重載,是指允許存在多個同名方法,而這些方法的參數不同。重載的實現是:編譯器根據方法不同的參數表
,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的調用地址在編譯期
就綁定了。
多態:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據
賦給它的不同的子類,動態調用屬於子類的該方法,這樣的方法調用在編譯期間是無法確定的。
不難看出,兩者的區別在於編譯器何時去尋找所要調用的具體方法,對於重載而言,在方法調用之前,編譯
器就已經確定了所要調用的方法,這稱爲“早綁定”或“靜態綁定”;而對於多態,只有等到方法調用的那一刻
,編譯器纔會確定所要調用的具體方法,這稱爲“晚綁定”或“動態綁定”。
來完成不同的功能。那麼兩者有什麼區別呢?
重載,是指允許存在多個同名方法,而這些方法的參數不同。重載的實現是:編譯器根據方法不同的參數表
,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的調用地址在編譯期
就綁定了。
多態:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據
賦給它的不同的子類,動態調用屬於子類的該方法,這樣的方法調用在編譯期間是無法確定的。
不難看出,兩者的區別在於編譯器何時去尋找所要調用的具體方法,對於重載而言,在方法調用之前,編譯
器就已經確定了所要調用的方法,這稱爲“早綁定”或“靜態綁定”;而對於多態,只有等到方法調用的那一刻
,編譯器纔會確定所要調用的具體方法,這稱爲“晚綁定”或“動態綁定”。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
ClickHouse內幕(2)基礎數據結構
原創
2024-06-07 23:54:50
兒童節變身小小音樂家*用ModelArts製作一張AIGC音樂專輯
原創
2024-05-31 11:04:39
【建議收藏】手把手教您如何升級到DevExpress最新版本!
原創
2024-05-30 12:19:46
實現“代碼可視化”需要了解的前置知識-編譯器中端
原創
2024-05-21 11:56:05
「Java開發指南」如何用MyEclipse搭建GWT 2.1和Spring?(二)
原創
2024-05-17 12:21:26
Spring Boot3,啓動時間縮短 10 倍!
原創
2024-05-13 02:20:47
「Java開發指南」如何用MyEclipse搭建GWT 2.1和Spring?(一)
原創
2024-05-08 11:36:35
聊聊Swift中的宏
原創
2024-04-18 23:26:09
低代碼集成Java系列:高效構建自定義插件
原創
2024-04-15 10:22:44
實現“代碼可視化”需要了解的前置知識-編譯器前端
原創
2024-04-12 23:16:44
如何使用符號表對象來實現記錄類型
原創
2024-04-11 23:07:59
編譯器如何避免生成冗餘的goto指令
原創
2024-04-11 23:07:56
域控軟件安全隔離關鍵技術剖析:MCU域 VS SOC域
原創
2024-04-11 22:41:57
數據結構筆記淺記(九)存儲設備
原創
2024-04-08 23:38:13