類是對象的模板,抽象類和接口可以看做是具體的類的模板。 由于從某種角度講,接口是一種特殊的抽象類,它們的淵源頗深,有很大的相似之處,所以在選擇使用誰的問題上很容易迷糊。我們首先分析它們具有的相同點(diǎn)。
下面說一下抽象類和接口的主要區(qū)別。 1) 抽象類可以為部分方法提供實(shí)現(xiàn),避免了在子類中重復(fù)實(shí)現(xiàn)這些方法,提高了代碼的可重用性,這是抽象類的優(yōu)勢;而接口中只能包含抽象方法,不能包含任何實(shí)現(xiàn)。
再換成接口看看:
2) 一個(gè)類只能繼承一個(gè)直接的父類(可能是抽象類),但一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,這個(gè)就是接口的優(yōu)勢。
綜上所述,接口和抽象類各有優(yōu)缺點(diǎn),在接口和抽象類的選擇上,必須遵守這樣一個(gè)原則:
|
|