天天看點

C#多态性-什麼是多态

下面舉一個生活的例子來了解多态。如果要求3種人——孩子,運動員,音樂演奏者都執行一個動作“play”,會發生什麼情況呢?

孩子會出去玩耍。

運動員會比賽。

演員開始演奏。

對于同一個指令,不同的人會有不同的反應,執行不同的動作,這就是生活中一個多态。在程式設計中,對于同一個方法,由于執行的對象不同,方法的内容也就不同。執行的結果也是不相同的。

同一操作作用于不同的對象,可以有不同的解釋,産生不同的執行結果,這就是多态性。

多态性通過派生類覆寫基類中的虛函數型方法來實作。

多态性分為兩種,一種是編譯時的多态性,一種是運作時的多态性。

編譯時的多态性:編譯時的多态性是通過重載來實作的。對于非虛的成員來說,系統在編譯時,根據傳遞的參數、傳回的類型等資訊決定實作何種操作。

運作時的多态性:運作時的多态性就是指直到系統運作時,才根據實際情況決定實作何種操作。C#中運作時的多态性是通過覆寫虛成員實作。

我們來分别說明一下多态中涉及到的四個概念:重載,覆寫,虛方法和抽象方法。