JAVA面向對象特性與接口(上)

    一、生活中的抽象

    從某個角度來說,抽象其實是無處不在的。要理解這個說法,先來說說什麼是抽象。

    拿我們日常生活中最常見的電視作個例子:要想在生活中使用一臺正常的電視機,大概可以分爲3步,各自對應着3個層次。

    第一步:工程師設計出完善的圖紙(產品設計圖)。

    第二步:工人師傅們根據圖紙,依據(銷售)需要製作出N個電視機實物。

    第三步:用戶們使用自己的電視機。

    我們先不着急把這個模型套用到我們的JAVA上,繼續來看抽象的問題。大家都知道,現在的電視機生產廠家其實自己不會製造所有的零部件,而是從各個零部件生產商處購買。而很有可能某個“部件”商又是從他的下一級零件供應商處買來零件組裝而成的。舉個例子,假設長虹電視機廠會從某個主電路板供應商處拿貨,而這個電路板供應商會從自己的下一級供應商處獲得電容、二級管、主板(裸板)等等元件,而這些供應商肯定也是從別人那裏買來原料加工。。。

逐層抽象

    如上圖,這其實就是一個典型的抽象了,對於上一層而言,下一層提供的“成品”是一個“具有一定功能的單元”,而具體如何實現、如何作出這個“單元”,則是下一層的任務,上一層是不用、不能、不須知道的!而這正是“抽象”!

   所以我們可以暫時得到“抽象”的兩個特點:

   1、抽象具有封裝性,即實現細節由下一層負責,上一層(使用者)不會、不能得知,也無必要得知,上一層只需知道這個被封裝的單元具有什麼功能就足夠了。

   2、抽象具有簡易性,由於複雜的設計和實現等細節都由下層完成了,並且很好地“隱藏”了,使得對於上一層而言,“使用”這個單元變成一件很容易的事。

   返回電視機的例子,長虹電視機生產商並不需要知道主板是怎麼製造出來的。只知道拿到的主板可以實現自己需要的功能就可以,然後使用主板的這個功能,組裝出了一臺完整的電視機。

   由此來看,我們的生活中抽象是無處不在的。大家使用電腦辦公,不用有很深的電腦知識,只需要知道電腦有什麼功能,來使用它就OK了,這是抽象;老婆讓我洗衣服,不需要知道我是怎麼洗地,只知道我有完成洗衣服的功能就可,這也絕對是抽象。。。

  二、JAVA中如何來抽象

    其實說到這裏,我們就可以對上號了,java之所以流行,就是因爲抽象作得非常好,以便使用者不用太多地對某個類瞭解就可以去正確地使用它,快速地組裝出自己的“電視機”。而封裝、繼承、多態就是爲了抽象的封裝性和簡易性這個目的。那麼怎麼來告訴使用者這個單元能實現什麼功能呢?當然就是接口的價值所在了。

    ----細節-----未完待續--------------------

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