抽象類和介面

2021-10-03 23:46:35 字數 1133 閱讀 1138

物件導向中的抽象類可用於表達現實世界中的抽象概念,是一種只能定義型別,而不能產生物件的類,**就是說抽象類不能定義物件,但是能定義指標,**只能被繼承並重寫相關函式,抽象類用於抽象出子類的共同特徵,提高**的架構能力,最直接的特性就是相關函式沒有完整的實現,但是c++語言中沒有抽象類的概念,只能通過純虛函式實現抽象類,注意這裡是純虛函式和我們之前說的虛函式還有差別,純虛函式是指只定義原型的成員函式,乙個c++類中存在純虛函式就成為了抽象類

純虛函式的語法規則

class

shape

;"=0"用於告訴編譯器當前是宣告純虛函式,因此不需要定義函式體

先來看乙個例子:

#include

#include

using

namespace std;

class

shape

;class

square

:public shape

double

area()

};class

circle

:public shape

double

area()

};void

print

(shape *p)

intmain()

結果:

sice@sice:~$ ./a.out 

r =16

r =28.26

抽象類與虛函式抽象類只能用作父類被繼承

子類必須實現純虛函式的具體功能

純虛函式被實現後成為虛函式

如果子類沒有實現純虛函式,則子類成為抽象類

接下來我們說下介面,滿足下面條件的c++類叫做介面

類中沒有定義任何的成員變數

所有成員函式都是公有的

所有的成員函式都是純虛函式

介面其實是一種特殊的抽象類

介面和抽象類

介面和抽象類 今天自學了一下介面,從第一次接觸介面又進一步理解介面的原理。想到介面或許我們更多的是想到和類的對比,而類中抽象類和介面又更為相似。現在我講下我對介面和抽象類的理解。如果單從具體 來看,對這兩個概念很容易模糊,甚至覺得介面就是多餘的,因為單從具體功能來看,除多重繼承外 c 抽象類似乎完全...

抽象類和介面

抽象類 1.是一種特殊的類,除了不能被例項化外,具有類得其他特性.2.抽象類的方法可以不宣告為abstract,此時可以實現方法提 如果宣告為abstract,則不可以實現方法體,只能宣告,如 public abstract int remove int i,int j 此時類必須宣告為抽象 3.乙...

抽象類和介面

1.抽象類 含有abstract修飾符的類即為抽象類。可用於實現 重用。抽象類與普通類的唯一區別 不能建立例項物件 允許有抽象方法,但不必須是抽象的。抽象類中定義的抽象方法必須在具體子類中實現,所以不能有抽象構造方法或抽象靜態方法 如果沒有全部實現抽象父類的抽象方法,子類也要定義為抽象型別。2.介面...