close

參考:http://www.dotblogs.com.tw/atowngit/archive/2009/08/26/10253.aspx

抽象類別:

是用來定義相同種類的物件,所需要具備的共通特性;例如動物(Animal),是所有動物的基底,所有動物具有吃、喝、睡覺等等共同的特性,但是,每種動物吃的東西不一樣(人類屬雜食,老虎只吃肉...),所以我們可以將這些基本特性,寫成抽象類別與方法,讓其他類別來繼承並且實做方法,這就就抽象類別的意義。

介面:

是用來定義不同種類的物件中,針對某種特性,所需要具備的相同功能;我們說,飛機(airplane)會飛,鳥(bird)也會飛,這兩個物件是不同種類的,可是他們都具有會飛的特性,差別在於飛行的方式不同,一個靠機械完成,一個則是拍動翅膀,所以,我們可以將飛行(Fly)寫成介面,物件只要繼承這個介面並且方法,該物件就具有飛行的特性了。

 

觀念上:

abstract 是 is a 的關係(繼承),人 狗 豬 鳥 是一種動物,動物要會吃 會動 會叫

Interface是 has a 的關係(合成),鳥 飛機 火箭 都有飛的功能, 但不是同一種類

 

 

實作上:

以上兩個作法,在有類別繼承了它們之後,都必需要去實作(Implement)裡面的所有的Method

 

 

 類別只能繼承一個,介面可以繼承很多個

 

 

 

 

 

arrow
arrow
    全站熱搜

    alansong 發表在 痞客邦 留言(0) 人氣()