當我們學習完C#語法之後,最讓人糾結的應該是面向對象思維編程了.
而面向對象裡面,最讓人難理解的莫過於面向對象的第三特徵_多態了.
面向對象多態虛函數、抽象類、接口的使用#
工具/原料
Visual Studio
方法/步驟
首先,我們需要具備C#面向對象的語法. 封裝、繼承、多態.
如果你沒有學習過這些,那麼再往下看就沒有太大意義了.
面向對象的目的是為了解決軟件代碼量越來越大,大型軟件開發問題越來越突出,管理方便而設計的一種編程思維方法. 而面向對象中的多態更是把這一思想發揮到極致,讓程序機構更加清晰,方便管理,代碼複用率提高,包括日後拓展等. 如果我們只是寫個幾分鐘的小軟件,不考慮以後維護升級拓展等,其實壓根沒必要使用面向對象來分析糾結那麼多!
面向對象多態虛函數、抽象類、接口的使用#
首先,我們要演示一下接口.
三種鴨子:
真鴨子會游泳
木頭鴨子不會游泳
橡皮鴨子會游泳
上面主要都是游泳,那麼主要體現在能力和行為上.能力一般都是接口來完成.我們如果要提取一個父類,但是無法解決游泳的函數,因為木頭鴨子不會.真鴨子需要被創建對象,真鴨子有意義會游泳. 虛方法也不合適,因為木鴨子不會游泳.那麼用接口是最合適的.
面向對象多態虛函數、抽象類、接口的使用#
我們來把上面的代碼實現一下,為了方便理解,我用了中文.
新建一個C# 控制檯程序就可以了.
如果你的visual studio 不支持中文,是因為版本太低了.
面向對象多態虛函數、抽象類、接口的使用#
運行一下我們看看會輸出什麼效果??
面向對象多態虛函數、抽象類、接口的使用#
如果你能在幾個類中抽象出一個父類,而且必須父類中寫上這幾個子類共有的方法.然後你又不知道如何來寫這個方法.那麼就用抽象類.
面向對象多態虛函數、抽象類、接口的使用#
那我們再來寫一段代碼.
面向對象多態虛函數、抽象類、接口的使用#
最後一個就是虛方法了.
如果抽象出來的幾個類,這個方法可以在父類中實現,並且還需要創建父類的對象,那麼就用虛方法.
可以直接調用父類中的方法,如果認為父類中的方法不滿意,自己再重寫一次.
面向對象多態虛函數、抽象類、接口的使用#
代碼如下
面向對象多態虛函數、抽象類、接口的使用#
運行結果如下:
面向對象多態虛函數、抽象類、接口的使用#
注意事項
明白抽象,虛方法,接口的使用側重點的區別,在什麼場合下用哪個比較好.
需要在團隊開發中慢慢積累實際的經驗.