區分多態與重載

多態是基於對抽象方法的覆蓋來實現的,用統一的對外接口來完成不同的功能。重載也是用統一的對外接口
來完成不同的功能。那麼兩者有什麼區別呢?
重載,是指允許存在多個同名方法,而這些方法的參數不同。重載的實現是:編譯器根據方法不同的參數表
,對同名方法的名稱做修飾。對於編譯器而言,這些同名方法就成了不同的方法。它們的調用地址在編譯期
就綁定了。
多態:是指子類重新定義父類的虛方法(virtual,abstract)。當子類重新定義了父類的虛方法後,父類根據
賦給它的不同的子類,動態調用屬於子類的該方法,這樣的方法調用在編譯期間是無法確定的。
不難看出,兩者的區別在於編譯器何時去尋找所要調用的具體方法,對於重載而言,在方法調用之前,編譯
器就已經確定了所要調用的方法,這稱爲“早綁定”或“靜態綁定”;而對於多態,只有等到方法調用的那一刻
,編譯器纔會確定所要調用的具體方法,這稱爲“晚綁定”或“動態綁定”。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章