物件導向中的抽象類可用於表達現實世界中的抽象概念,是一種只能定義型別,而不能產生物件的類,**就是說抽象類不能定義物件,但是能定義指標,**只能被繼承並重寫相關函式,抽象類用於抽象出子類的共同特徵,提高**的架構能力,最直接的特性就是相關函式沒有完整的實現,但是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.介面...