一、抽象類
含有abstract修飾符的類為抽象類,抽象類可以擁有自己的建構函式,但是不能直接通過new進行例項化,可以通過子類繼承,例項化子類的時候抽象類也會被例項化。
抽象類可以包括方法也可以包括抽象方法,這是類所不能的。抽象方法只能宣告於抽象類中,且不能進行實現,派生類必須覆蓋它們。
抽象類可以派生乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋。
二、介面
介面是引用型別,不能被例項化,一旦繼承必須全部實現,可以多繼承,不能有訪問修飾符,不能實現方法。
和抽象類有三點相似之處:1.不能被例項化 2. 包含未宣告的方法 3.派生類必須實現未實現的方法,抽象類是抽象方法,介面則是所有成員。
介面有以下特性:
介面除了可以包含方法外,還可以包含屬性、索引器、事件,而這些成員都被定義為共有的。除此之外,不能包含任何其他成員,例如:常量、域、
建構函式、析構函式、靜態成員。
抽象類和介面的區別:
1.抽象類只能單繼承,介面可以多繼承。
2.抽象類中可以宣告建構函式,介面中不可以。
3.抽象類中可以使用public、private、protected等訪問修飾符,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。
4.抽象類中可以包含static靜態方法,介面中不行。
5. 抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static final型別,並且預設即為public static final型別。
6. 抽象類中可以包含非抽象的普通方法,介面只能宣告不能實現。
7. 抽象類中可以有普通成員變數,介面中不能。
抽象類和介面的使用場景:
抽象類:
抽象類主要用於關係密切的物件 ,元件的所有實現間提供通用的已實現功能,
如果要建立元件的多個版本,設計大的功能單元 ,將使用抽象類。
介面:
介面適合互不相關的類提供通用功能,小而凝練的功能塊也使用介面。好的介面定義要具有專一性,避免造成介面汙染。
如果乙個類只實現了這個介面中的乙個功能,而不得不去實現介面中的其他方法,這就叫介面汙染。
C 抽象類和介面
net 提供了介面,這個不同於 class 或者struct 的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在 net 可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的...
C 抽象類和介面
物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。在類的基礎上進行抽象,那麼便是抽象類。比如黑貓,白貓,小貓,大貓,它們的共同特點就是屬於貓,那麼貓就是乙個類,同樣狗也是乙個類。在貓狗的基礎上,因為它們均屬於動物,那麼動物便是它們...
C 抽象類和介面
抽象類和介面有什麼區別?有了抽象類為什麼還要介面?介面和抽象類的相同點是都不能例項化,不同點是介面中的方法都沒有方法體,而抽象類則不然,除了抽象方法沒有方法體外,其他方法都有方法體。原因是 在c 中,類只能繼承乙個類,但可繼承多個介面。抽象類 1 不能例項化 2 抽象方法必須被子類重寫 3 如果類中...