C# 多態和接口
阿新 • • 發佈:2019-02-13
class 好處 但是 實現 類比 重寫 htm 基於 ()
好,接下來介紹一下接口如何實現多態~
1多態可以有屬性,接口只有方法
2關鍵字不同,多態有靜態多態(abstract)和動態多態(virtual),靜態多態不能new()出自己,動態多態可以;多態中可以有自己的方法可設置不需要子類重寫,接口則否,
3.基於上述兩點發現,多態比接口更寬松,但有時由於接口的單一使得很使用明確,別人用起來很方便.多態顯得太龐大.
根本不需要查看源代碼是如何實現的,這就是多態的好處.
可以看 https://www.cnblogs.com/wl-blog/p/10361894.html 講的什麽時候用接口
我要問一個問題,喜鵲和老鷹都可以飛,這個飛的能力,我怎麽來實現呢?
XXX答:“在父類Bird中添加一個Fly方法不就好了~~”
我再問:“好的,照你說的,企鵝繼承父類Bird,但是不能企鵝不能飛啊,這樣在父類Bird中添加Fly方法是不是不合適呢?”
XXX答:“那就在能飛的鳥類中分別添加Fly方法不就可以了嗎?”
對,這樣是可以,功能完全可以實現,可是這樣違背了面向對象開放封閉原則,下次我要再擴展一個鳥類比如貓頭鷹(Owl),我還要去源代碼中看下Fly是怎麽實現的,然後在Owl中再次添加Fly方法,相同的功能,重復的代碼,這樣是不合理的,程序也不便於擴展;
其次,如果我還要添加一個飛機類(Plane),我繼承Bird父類,合適嗎?
很顯然,不合適!所以我們需要一種規則,那就是接口了,喜鵲,老鷹,飛機,我都實現這個接口,那就可以飛了,而企鵝我不實現這個接口,它就不能飛~~
C# 多態和接口