C++抽象,封裝,繼承,多態


面向對象的基本概念有對象、類、抽象、封裝、繼承、多態、接口等

有的人說面向對象有四大基本特征,抽象,封裝,繼承,多態,但其實抽象可以拋出在外,本質來說,面向對象的基本特征是繼承,封裝,多態。

先來說C++中的對象和類:

類是對象的抽象,而對象是類的具體化,而要使用類的功能,具體就要先定義一個對象

例如:class Student { };  Student stu里面的stu就是對象   還有一種定義的方法 class { }stu1,stu2;

封裝:其實封裝和抽象可以歸結到一起,抽象的是具體的實現,封裝的是接口,封裝就是將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成”類”,其中數據和函數都是類的成員。封裝的目的是增強安全性和簡化編程,使用者不必了解具體的實現細節,而只是要通過外部接口,特定的訪問權限來使用類的成員。封裝可以隱藏實現細節, 使得代碼模塊化。

封裝的簡單一句話:封裝就是將實例抽象得到的數據和行為(或功能)封裝成一個類。

 

繼承:繼承是指這樣一種能力,它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。其繼承的過程,就是從一般到特殊的過程,它是類與類之間的一種關系,一個類通過繼承的方法,可以得到另一個類屬性和方法,達到代碼重用的目的。

引申:

繼承,有三種繼承方法,分為實現繼承,接口繼承,可視化繼承。

 實現繼承就是重新寫一個函數去實現。用純虛函數實現。

 接口繼承是指純粹繼承父輩的老底,也可以去重新實現。用虛函數實現。  

可視化繼承則是純粹的全部自己實現,自己功能自己解決。對應的是非虛函數。

 

多態:C++多態性是通過虛函數來實現的,虛函數允許子類重新定義成員函數,而子類重新定義父類的做法稱為覆蓋或者稱為重寫。而重載則是允許有多個同名的函數,而這些函數的參數列表不同,允許參數個數不同,參數類型不同,或者兩者都不同。關於多態,簡而言之就是用父類型別的指針指向其子類的實例,然后通過父類的指針調用實際子類的成員函數

多態簡單一句話:一種調用,多種狀態(一個接口,多種方法)

引申:

重載

同一個類中,函數名相同,參數列表不同的函數之間是重載關系。

覆蓋
子類重寫父類的虛函數,函數名相同,參數列表相同,返回值相同的虛函數。

隱藏(有兩種情況)
1. 派生類的函數與基類的函數同名,但是參數不同。此時,不論有無virtual關鍵字。
2. 派生類的函數與基類的函數同名,並且參數也相同。但是基類函數沒有virtual關鍵字。

 


免責聲明!

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



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