抽象基類

抽象基類

抽象類(abstract base class,ABC)就是類里定義了純虛成員函數的類。純虛函數 只提供了介面,並沒有具體實現。抽象類不能被實例化(不能創建對象),通常是作為基類供子類繼承,子類中重寫虛函數,實現具體的介面。簡言之,ABC描述的是至少使用一個純虛函數的介面,從ABC派生出的類將根據派生類的具體特徵,使用常規虛函數來實現這種介面。

定義


抽象基類的理念:在處理繼承的問題上,ABC方法更系統性,更規範。設計ABC之前,應先開發一個模型—指出編程問題所需的類以及它們之間的相互關係。一種學院派思想認為,如果要設計類繼承層次,則只能將那些不會被用作基類的類設計為具體的類。這種設計方法更清晰,複雜度低。

特點作用


抽象類只能作為基類來使用。抽象基類必須至少使用一個純虛函數介面。(純虛函數可以在抽象類中定義)抽象基類不能創建對象實例。只能當基類被其它類繼承。原型中使用=0指出類是一個抽象基類,在類中可以不定義該函數。抽象類只能作為基類來使用,其純虛函數的實現由派生類給出。如果派生類沒有重新定義純虛函數,而派生類只是繼承基類的純虛函數,則這個派生類仍然還是一個抽象類。如果派生類中給出了基類純虛函數的實現,則該派生類就不再是抽象類了,它是一個可以建立對象的具體類了。基類的純虛函數必須有“=0”,但不一定沒有函數的實現,只是不能直接內嵌在類中。抽象基類的作用:在處理繼承問題上,更系統,更規範,如果要設計類?
定義抽象基類是為了給子類繼承實現具體的功能,它是”殘缺的類“,裡面沒有抽象方法的具體代碼,裡面的抽象方法是被子類重寫的!