C++封裝繼承多態的理解


封裝:
也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是面向對象的特征之一,是對象和類概念的主要特性。

繼承(inheritance):C++通過類派生機制來支持繼承。被繼承的類型稱為基類或超類,新產生的類為派生類或子類。保持已有類的特性而構造新類的過程稱為繼承。在已有類的基礎上新增自己的特性而產生新類的過程稱為派生。繼承和派生的目的是保持已有類的特性並構造新類。

繼承的目的:實現代碼重用。派生的目的:實現代碼擴充。三種繼承方式:public、protected、private。

繼承時的構造函數:(1)、基類的構造函數不能被繼承,派生類中需要聲明自己的構造函數;(2)、聲明構造函數時,只需要對本類中新增成員進行初始化,對繼承來的基類成員的初始化,自動調用基類構造函數完成;(3)、派生類的構造函數需要給基類的構造函數傳遞參數;

多態:
就是指一個類實例的相同方法在不同情形有不同表現形式。多態機制使具有不同內部結構的對象可以共享相同的外部接口。這意味着,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。

多態(Polymorphic)性可以簡單地概括為“一個接口,多種方法”,程序在運行時才決定調用的函數。C++多態性是通過虛函數來實現的,虛函數允許子類重新定義成員函數,而子類重新定義父類的做法稱為覆蓋或者稱為重寫。而重載則是允許有多個同名的函數,而這些函數的參數列表不同,允許參數個數不同,參數類型不同,或者兩者都不同。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然后通過父類的指針調用實際子類的成員函數。

多態的目的則是為了接口重用

C++中,實現多態有以下方法:虛函數、抽象類、重載、覆蓋、模板。

函數重載(Overload):指在相同作用域里(如同一類中),函數同名不同參,返回值則不用理會,不同參可以是不同個數,也可以是不同類型。效果:根據實參的個數和類型調用對應的函數體。

函數覆蓋(Override)(函數重寫):指派生類中的函數覆蓋基類中的同名同參虛函數,因此作用域不同。效果:基類指針或引用訪問虛函數時會根據實例的類型調用對應的函數。

函數隱藏(Hide):對於子類中與基類同名的函數,如果不是覆蓋那就成了隱藏。兩種情況:(1)、同名不同參;(2)、同名同參但基類不是virtual函數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM