程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 白馬非馬----繼承(我還轉)

白馬非馬----繼承(我還轉)

編輯:關於JSP

白馬非馬
                   ----繼承
作者:HolyFire
古人雲:“白馬非馬”,為何如是說呢。
這裡有個講究,白馬是指一種白色的馬,而非馬裡的馬指的是各種各樣的馬,有黑馬,棕嗎,五花馬等等,這是在顏色上有所區別,馬還有產地,品種等等區別。這裡給了我們一個啟示,各種各樣的馬可以找出很多共同點,稱之為馬,符合這些特點的動物就是馬了,所以這些共同點不能多也不能少,多了不能同用於所有的馬,少了表達不出馬來。要區別一只馬需要很多信息,比如一只黑色的蒙古馬,在這裡,我除了描述一只馬外,還要指出它是黑色的,產地是蒙古,這裡還沒有加上馬的品種。
我在《芥子須彌-----封裝》裡曾經提及,事物可以劃分成屬性和方法的集合。那麼我們是不是可以對這個集合進行再加工呢,我們只要在裡面加上一點別的什麼,那他就可以變成別的事物了,想象一下在馬的身上加上鹿的角,呵呵呵呵,可笑嗎。那麼我們說一些嚴肅的,知道我們中華民族的圖騰嗎,龍!龍是在蛇的頭上加上鹿的角,身上加上虎的腿腳,尾巴是魚的尾巴,等等。但是不是隨隨便便就能造就龍這樣偉大的象征的,不好好設計,就會成為畫蛇添足。
雖然是簡單和相加,但也是有不同的方式的。一般來說有兩種方式:關聯和衍生。
關聯:假設原來的類是用一個袋子將屬性和方法包起來,那是用關聯描述了多個類之間的關系,最簡單的情況就是用一個更大的袋子將兩個小袋子包起來,成為一個新的類。這種關聯叫做組合。
衍生:衍生呢就是用一個大的袋子將一個小的袋子與一些屬性和方法包起來,成為一個新的類


  A

  C

  B



a:關聯


  A

  D

b:衍生
我還是用C++來表示一下
class A{
//...屬性+方法
};
class B{
//...屬性+方法
};
//關聯後的新類C
class C{
    A a;
    B b;
};
//衍生後的新類D
class D : public A{
//...屬性+方法
};
看起來關聯(組合)比較容易理解,即將類作為一個屬性,然後形成一個新的類,這和原來類的使用沒什麼區別,自己定義的類就是一個類型,這正是封裝要做的。

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