(二)
抽象類在介紹抽象類之前,我們先介紹一下純虛函式。
1.純虛函式
在基類中僅僅給出宣告,不對虛函式實現定義,而是在派生類中實現。這個虛函式稱為純虛函式。普通函式如果僅僅給出它的宣告而沒有實現它的函式體,這是編譯不過的。純虛函式沒有函式體。
純虛函式需要在宣告之後加個=0;
class 基類
;
2.抽象類
含有純虛函式的類被稱為抽象類。抽象類只能作為派生類的基類,不能定義物件,但可以定義指標。在派生類實現該純虛函式後,定義抽象類物件的指標,並指向或引用子類物件。
1)在定義純虛函式時,不能定義虛函式的實現部分;
2)在沒有重新定義這種純虛函式之前,是不能呼叫這種函式的。
抽象類的唯一用途是為派生類提供基類,純虛函式的作用是作為派生類中的成員函式的基礎,並實現動態多型性。繼承於抽象類的派生類如果不能實現基類中所有的純虛函式,那麼這個派生類也就成了抽象類。因為它繼承了基類的抽象函式,只要含有純虛函式的類就是抽象類。純虛函式已經在抽象類中定義了這個方法的宣告,其它類中只能按照這個介面去實現。
3.介面和抽象類的區別
1)c++中我們一般說的介面,表示對外提供的方法,提供給外部呼叫。是溝通外部跟內部的橋梁。也是以類的形式提供的,但一般該類只具有成員函式,不具有資料成員;
2)抽象類可以既包含資料成員又包含方法。
(三)示例
#include
#include
#include
using namespace std;
class human
virtual human*
test
(void)}
;class englishman : public human
// void wearing(void)
virtual ~
englishman()
virtual englishman*
test
(void)}
;class chinese : public human
void
wearing
(void
)void
driving
(void
) virtual ~
chinese()
virtual chinese*
test
(void)}
;int
main
(int argc,
char
**ar**)
(四)在子類中沒有編寫存虛函式的,可在派生類中編寫,這樣可以編譯通過
C 之抽象類
當乙個類繼承乙個抽象類卻沒有實現抽象類中的抽象方法時,此繼承類必須為抽象類 using system using system.collections.generic using system.linq using system.text namespace abstract test public...
java之抽象類
1 抽象類概念 抽象類前使用abstract關鍵字修飾,則為抽象類 2 抽象類的應用場景 a 在某些情況下,乙個父類只知道其子類應該包含某些方法,但是不能確切的知道如何實現這些方法 b 從多個具有相同特徵的類中抽象出乙個抽象類,以這個類作為子類的模板,從而避免了子類設計的隨意性 3 作用 限制規定子...
java之抽象類
分析事物時,發現了共性內容,就出現向上抽取。會有這樣一種特殊情況,就是方法功能宣告相同,但方法功能主體不同。那麼這時也可以抽取,但只抽取方法宣告,不抽取方法主體。那麼此方法就是乙個抽象方法。比如我們要宣告乙個人類class,人類包含很多種,美國人和中國人。那麼人類肯定會說話,但是說的是英語還是漢語需...