您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關C++中的面向對象編程概念是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
一.對象(Object),這個概念可以說是面向對象里面的最為核心的概念,如果找不著對象,又如何面向對象呢?對象,也就是你要處理的問題里面設計的若干個因素,比如你做學生成績統計,那么學生當然是你要考慮的對象。
二.類(Class),從本質上講是先有對象才有類,因為在處理的實際編程問題時,你面對的是一個個具體的對象,太多了,怎么辦?分門別類,實現物以類聚,對了,將相同屬性的對象作為一類進行考慮,張三也好,李四也好,他們都是人的一個實例。在具體的語言實現時,兩者的順序就需要顛倒一下了,也就是要先有類,然后才能實例化生成對象。
三.面向對象的三大特性:
1.封裝
所謂的封裝也就是在類的設計時,實現對于類內的數據與方法的不同權限設置,有些數據和方法,我們不希望用戶在類的外部通過實例化去調用,那么我們將它們聲明成私有的(private),這樣這些數據和方法只能被類內部的成員函數訪問,而如果希望能夠被實例訪問,那么聲明成公有的(public),至于第三種訪問區分符(protected)保護型的,在類的繼承時應用,我們到繼承那里說明。
與封裝有關的一個概念是“抽象”(abstract) ,即將設計的類的最主要的功能表示出來,這些功能正是要被其他類和函數訪問的。
2.繼承
與繼承有關的概念是關系,關系描述了類之間的聯系,有四種基本類型,即“繼承、組合、利用、實例化”。繼承就是說某一個類具有了另外一個類所有的數據和方法,當然可以修改一部分并且增加新的數據和方法。繼承分為兩種類型,即單重繼承和多重繼承。
單重繼承,即類Derived繼承了類Base,定義如下:
class Base { }; class Derived:public Base { }
可見在定義繼承類時,要指明繼承了哪一個類,并且指明繼承級別(public,protected,private),通過這三種訪問區分符的修飾,可以改變基類數據在派生類中的訪問權限,public 繼承不會改變,protected繼承的話原來的public 數據和方法變成派生類的protected型數據和方法,其他不變,private繼承則將所有的數據和方法的訪問權限設置為private,即這些數據和方法都不能在類的外部訪問。
派生類的構造和析構順序,首先構造基類,然后構造派生類,中間是類的作用,析構順序正好相反。
多重繼承是說一個類繼承了兩個或者多個類的數據或者方法。在多重繼承這里預見的主要的問題是兩個歧義性:首先,當繼承的兩個基類中含有相同的數據或者方法時,在派生類中調用無法區分。
解決方法:指明調用的哪一個類的成員變量和方法,使用作用域分解運算符;在派生類里面重新定義該數據或者方法。第二類歧義性發生在多層繼承時,B,C繼承了A,而D又繼承了B,C,正如矩形和菱形繼承四邊形而正方形繼承了矩形和菱形,兩條繼承路徑使得基類被兩次繼承,直接訪問無法區分,解決方法:支出繼承路徑,使用虛基類(virtual)方法,在定義繼承關系時添加virtual使得基類永遠只有一份拷貝。
3.多態
多態性分為兩種,即靜態多態性和動態多態性。所謂多態,也就是明明同樣一個東西,在不同情況下有著不同的表現。
靜態多態性,即預先定義好的,通過函數重載(funcition overload)實現,函數包含了返回值、函數名稱、函數參數三個,名字多表示功能,返回值的區分不能區分函數(想象數據類的強制轉換吧)。因此重載也就是函數名稱相同而參數不同,不同可以表現在參數個數不同、參數類型不同、參數順序不同
以上就是C++中的面向對象編程概念是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。