C 抽象類和介面的區別

2021-10-08 05:17:36 字數 500 閱讀 7061

純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中定義純虛函式的方法(virtual returntype function()= 0)。

帶有純虛函式的類稱為抽象類。抽象類是一種特殊的類,它是為了抽象和設計的目的而建立的,它處於繼承層次結構的較上層,抽象類是不能定義物件的。

如果乙個類裡面只有純虛函式,沒有其他成員函式和資料成員,就是介面類。

介面帶來的最大好處就是避免了多繼承帶來的複雜性和低效性,並且同時可以提供多重繼承的好處。介面和抽象類都可以體現多型性,但是抽象類對事物進行抽象,更多的是為了繼承,為了擴充套件,為了實現**的重用,子類和父類之間體現的是is-a關係;介面則更多的體現一種行為約束,一種規則,一旦實現了這個介面,就要給出這個介面中所有方法的具體實現,也就是說實現類對於介面中所有的方法都是有意義的。

在設計類的時候,首先考慮用介面抽象出類的特性,當你發現某些方法可以復用的時候,可以使用抽象類來復用**。簡單說,介面用於抽象事物的特性,抽象類用於**復用。

C 抽象類和介面的區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...

C 抽象類和介面的區別

一 抽象類 在類宣告中使用abstract修飾符的類稱為抽象類。含有乙個或乙個以上的抽象成員的類,必須定義為抽象類。當方法宣告包含abstract修飾符時,稱該方法為抽象方法,雖然抽象方法同時隱含為虛擬方法,但是它不能有virtual修飾符。宣告中包含abstract修飾的屬性稱為抽象屬性。抽象方法...

抽象類和介面的區別

要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 這些聽起來有些虛,舉個例...