在了解什么是編譯時多態 與 運行時多態前,我們先了解下什么是多態
多態
多態指同一個實體同時具有多種形式。它是面向對象程序設計(OOP)的一個重要特征。如果一個語言只支持類而不支持多態,只能說明它是基於對象的,而不面向對象的。
多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。
多態的作用:
把不同的子類對象都當做父類來看,可以屏蔽不同子類對象之間的差異,抽象出一個通用的邏輯關系,以此來適應不同的業務需求。
編譯時多態 與 運行時多態
多態分為兩種情況:編譯時多態與運行時多態。編譯時多態:即在編譯時就能夠確定調用哪個方法。而運行時多態則相反,只有在運行時才能確定調用哪個方法。
下面我們來介紹下,編譯時多態 和 運行時多態在重載 和 重寫上的區別。
- 在方法重載時,都是編譯時多態。在編譯期可根據參數的數據類型、個數以及次序來確定調用方法
- 在方法重寫中,當子類對象引用自身類實例方法時,為編譯時多態。但是當父類對象引用子類實例方法時(也就是上轉型對象時,父類聲明,子類實例化),為運行時多態,因為此時只有在運行時才可以去匹配到對應方法進行調用。
參考鏈接: