“多態性”一詞最早用於生物學,指同一種族的生物體具有相同的特性。
在C#中,多態性的定義是:同一操作作用於不同的類的實例,不同的類將進行不同的解釋,最後產生不同的執行結果。C#支持兩種類型的多態性:
編譯時的多態性
編譯時的多態性是通過重載來實現的。我們在第十一章中介紹了方法重載的操作符重載,它們都實現了編譯時的多態性。
對於非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。
運行時的多態性
運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。C#中,運行時的多態性通過虛成員實現。
編譯時的多態性為我們提供了運行速度快的特點,而運行時的多態性則帶來了高度靈活和抽象的特點。