yeafee@夜飛郎

          it's usually better to solve problems with simplicity and finesse rather than muscle.

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            33 隨筆 :: 3 文章 :: 2 評論 :: 0 Trackbacks
          Java語言中對于抽象類定義進行支持兩種機制:abstract class 擴展extends和 interface 實現implements。

          abstract class和interface在對于抽象類定義的支持方面具有很大的相似性,甚至可以相互替換(程序不會出錯,功能也可以同等實現)。

          因此很多開發者在進行抽象類定義時對于abstract class和interface的選擇顯得比較隨意(和弄不清兩種抽象機制有關?)。

          其實,abstract class 和 interface 區別開來還是容易的。只要弄清楚描述對象本質和抽象概念的關系就好區分了。
          當描述對象本質和抽象概念是"is-a"關系時使用abstract來抽象描述對象;當描述對象本質和抽象概念是"like-a"關系時使用interface來抽象該對象
          ?
          舉個例子:
          我們來抽象手機,作為一種通訊工具。它的基本功能是拔電話(本質),不具備此功能的還能稱為手機?然后大家知道,手機還有許多的擴展功能,各家可能都不一樣。

          1abstract?class?Call{?
          2//?
          3abstract?void?dial();?
          4}
          ?

          interface?Dict{?
          ????
          void?findWord();?
          }
          ?

          class?XXPaiTelephone?
          extends?Call?
          implements?Dict{?
          ????
          void?dial(){??}?
          ????
          void?findWord(){??}?
          }


          上面基本實現對某品牌電話的一個抽象描述。因為描述對象本質是電話("is-a"關系),所以在抽象電話的功能時用的是abstract,而在抽象詞典功能("like-a"關系,帶詞典功能手機,像一部詞典)時就的就是interface。

          如果換了描述對象,假如電話換成是學習機。此時,查詞典成了本質("is-a"關系)。打電話的功能就成了一種擴展功能("like-a"的關系,像一個電話,其實它主要是用來查詞典的)

          abstract?class?Dict{?
          ????
          abstract?void?findWord();
          }

          ?
          interface?Call{?
          ????
          void?dial();?
          }
          ?


          class?XXPLearnMachine?
          extends?Dict?
          implements?Call{?
          ????
          void?findWord(){??}?
          ????
          void?dial(){??}?
          }

          參考:http://www.cnblogs.com/Mozier/archive/2006/04/08/369851.html
          posted on 2010-02-09 16:07 @yeafee 閱讀(200) 評論(0)  編輯  收藏 所屬分類: 程序語言
          主站蜘蛛池模板: 洛浦县| 黔西| 乡城县| 平和县| 乐安县| 东海县| 长沙县| 新源县| 建德市| 金溪县| 徐汇区| 台州市| 潞城市| 当阳市| 文昌市| 肇庆市| 安远县| 嘉定区| 房山区| 梧州市| 淮安市| 永德县| 贡觉县| 万载县| 乃东县| 通州市| 罗平县| 宝清县| 镇坪县| 长泰县| 新兴县| 阿鲁科尔沁旗| 长丰县| 韶关市| 隆德县| 静乐县| 临泉县| 渑池县| 阳新县| 安徽省| 肃宁县|