C 介面(抽象類)

2021-09-01 00:03:23 字數 1288 閱讀 1379

介面描述了類的行為和功能,而不需要完成類的特定實現。

c++ 介面是使用抽象類來實現的,抽象類與資料抽象互不混淆,資料抽象是乙個把實現細節與相關的資料分離開的概念。

如果類中至少有乙個函式被宣告為純虛函式,則這個類就是抽象類。純虛函式是通過在宣告中使用 "= 0" 來指定的,如下所示:

class box

;

設計抽象類(通常稱為 abc)的目的,是為了給其他類提供乙個可以繼承的適當的基類。抽象類不能被用於例項化物件,它只能作為介面使用。如果試圖例項化乙個抽象類的物件,會導致編譯錯誤。

因此,如果乙個 abc 的子類需要被例項化,則必須實現每個虛函式,這也意味著 c++ 支援使用 abc 宣告介面。如果沒有在派生類中過載純虛函式,就嘗試例項化該類的物件,會導致編譯錯誤。

可用於例項化物件的類被稱為具體類

請看下面的例項,基類 shape 提供了乙個介面getarea(),在兩個派生類 rectangle 和 ******** 中分別實現了getarea()

#include using namespace std;

// 基類

class shape

void setheight(int h)

protected:

int width;

int height;};

// 派生類

class rectangle: public shape

};class ********: public shape};

int main(void)

當上面的**被編譯和執行時,它會產生下列結果:

total rectangle area: 35

total ******** area: 17

從上面的例項中,我們可以看到乙個抽象類是如何定義乙個介面 getarea(),兩個派生類是如何通過不同的計算面積的演算法來實現這個相同的函式。

物件導向的系統可能會使用乙個抽象基類為所有的外部應用程式提供乙個適當的、通用的、標準化的介面。然後,派生類通過繼承抽象基類,就把所有類似的操作都繼承下來。

外部應用程式提供的功能(即公有函式)在抽象基類中是以純虛函式的形式存在的。這些純虛函式在相應的派生類中被實現。

這個架構也使得新的應用程式可以很容易地被新增到系統中,即使是在系統被定義之後依然可以如此。

C 介面(抽象類)

介面描述了類的行為和功能,而不需要完成類的特定實現。c 介面是使用抽象類來實現的,抽象類與資料抽象互不混淆,資料抽象是乙個把實現細節與相關的資料分離開的概念。如果類中至少有乙個函式被宣告為純虛函式,則這個類就是抽象類。純虛函式是通過在宣告中使用 0 來指定的,如下所示 class box 設計抽象類...

C 介面(抽象類)

介面描述了類的行為和功能,而不需要完成類的特定實現。c 介面是使用抽象類來實現的,抽象類與資料抽象互不混淆,資料抽象是乙個把實現細節與相關的資料分離開的概念。如果類中至少有乙個函式被宣告為純虛函式,則這個類就是抽象類。純虛函式是通過在宣告中使用 0 來指定的,如下所示 class box 設計抽象類...

C 介面(抽象類)

設計抽象類 通常稱為 abc 的目的,是為了給其他類提供乙個可以繼承的適當的基類。抽象類不能被用於例項化物件,它只能作為介面使用。如果試圖例項化乙個抽象類的物件,會導致編譯錯誤。因此,如果乙個 abc 的子類需要被例項化,則必須實現每個虛函式,這也意味著 c 支援使用 abc 宣告介面。如果沒有在派...