C#面向對象15 多態
多態
概念:讓一個對象能夠表現出多種的狀態(類型)
實現多態的3種手段:1.虛方法 2.抽象類 3.接口
1.虛方法
步驟:1.將父類的方法標記為虛方法,使用關鍵字 virtual,這個函數可以被子類重新寫一遍
2.override 子類重新的方法標記關鍵字
2.抽象類
當父類中的方法不知道如何去實現的時候,可以考慮將父類寫成抽象類,將方法寫成抽象方法
abstract 關鍵字
抽象方法是沒有方法體的!
子類用override重寫方法
抽象類是不允許創建對象的
抽象類特點:
* 1.抽象成員必須標記為abstract,並且不能有任何實現.
* 2.抽象成員必須在抽象類中.
* 3.抽象類不能被實例化.
* 4.子類繼承抽象類後,必須把父類中的所有抽象成員都重寫.(除非子類也是一個抽象類,則可以不重寫)
* 5.抽象成員的訪問修飾符不能是private
* 6.在抽象類中可以包含實例成員.並且抽象類的實例成員可以不被子類實現
* 7.抽象類是有構造函數的,雖然不能被實例化
* 8.如果父類的抽象方法中有參數,那麽,繼承這個抽象父類的子類在重寫父類的方法的時候必須傳入對應的參數.
* 如果抽象父類的抽象方法中有返回值,那麽子類在重寫這個抽象方法的時候,也必須要傳入返回值.
******虛方法和抽象類的區別
*如果父類中的方法有默認的實現,並且父類需要被實例化,這時可以考慮將父類定義成一個普通類,用虛方法來實現多態.
*如果父類中的方法沒有默認實現,父類也不需要被實例化,則可以將該類定為為抽象類.
C#面向對象15 多態