接口和抽象類

正所謂真理是大家看出來的,所以將園子裏有創新性的觀點潛列於此,一是感謝大家的共享,二是完善一家之言的不足,希望能夠將領域形成知識,受用於我,受用於衆。

  • dunai認爲:抽象類是提取具體類的公因式,而接口是爲了將一些不相關的類“雜湊”成一個共同的羣體。至於他們在各個語言中的句法,語言細節並不是我關心的重點。

  • 樺山澗的收藏也很不錯。

  • Artech認爲:所代碼共用和可擴展性考慮,儘量使用Abstract Class。當然接口在其他方面的優勢,我認爲也不可忽視。

  • shenfx認爲:當在差異較大的對象間尋求功能上的共性時,使用接口;當在共性較多的對象間尋求功能上的差異時,使用抽象基類。

  最後,MSDN的建議是:

  • 如果預計要創建組件的多個版本,則創建抽象類。抽象類提供簡單易行的方法來控制組件版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,接口一旦創建就不能更改。如果需要接口的新版本,必須創建一個全新的接口。 

  • 如果創建的功能將在大範圍的全異對象間使用,則使用接口。抽象類應主要用於關係密切的對象,而接口最適合爲不相關的類提供通用功能。

  • 如果要設計小而簡練的功能塊,則使用接口。如果要設計大的功能單元,則使用抽象類。

  • 如果要在組件的所有實現間提供通用的已實現功能,則使用抽象類。抽象類允許部分實現類,而接口不包含任何成員的實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章