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
類別只能繼承一個,介面可以繼承很多個
全站熱搜
留言列表