程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 深入繼承之抽象類和接口綜合分析及完整案列解說(一)(2)

深入繼承之抽象類和接口綜合分析及完整案列解說(一)(2)

編輯:關於C語言

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

以前在園字裡看過很多前輩對抽象類和接口的探討,結論是各有千秋,言之不盡。其中我最有印象的是dunai和shenfx的總結:

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

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

MSDN對抽象類和接口又是怎麼解說的呢?下面是我在MSDN上Copy的建議:

● 如果預計要創建組 件的多個版本,則創建抽象類。抽象類提供簡單易行的方法來控制組件版本。通過更新基類,所有繼承類都

隨更改自動更新。另一方面 ,接口一旦創建就不能更改。如果需要接口的新版本,必須創建一個全新的接口。

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

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

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

另外我們在看看Dflying Chen和一醉解千愁 他門倆的見解:

Dflying Chen: 接口用來定義兩個對象通信的契約;抽象類用來封裝對象間公用的行為。二者在設計起初的目標完全不同,

可惜在實際應用中被太多的 人誤解。

一醉解千愁:接口 -- 粗略的技術規范, 抽象類 -- 對粗略的技術規范作了一些簡單的說明 ,類 -- 技術規范的具體實 現.

在我們大型的項目中,一般項目經理會按照功能分塊,那麼每個塊最終必然是有聯系的,他們靠什麼聯系呢?當然就是公開的接口 了.至於接口下面是怎麼實現的,大家沒有必要知道太多,只要知道他們組這個接口實現了什麼功能既可.這個時候,各版塊之間的升級也就 顯得簡單了,只要接口不動,內部的代碼隨便怎麼修改都顯得不那麼重要了. 另外就是代碼的復用程度更加高和更簡單了.

這也同時 說明了接口的設計相對來說是很重要的了,現在您也明白了我為什麼花上這麼長的時間和這麼長的篇幅借用前輩門的觀點來闡述抽象類和接口 這個東西了吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved