C/C++編程筆記:C++中的面向?qū)ο缶幊?!帶你C++入門

面向?qū)ο缶幊台C顧名思義,在編程中使用對象。面向?qū)ο蟮木幊讨荚谠诰幊讨袑?shí)現(xiàn)諸如繼承,隱藏,多態(tài)等現(xiàn)實(shí)世界的實(shí)體。OOP的主要目的是將數(shù)據(jù)和對其進(jìn)行操作的功能綁定在一起,以便除該功能外,代碼的其他任何部分都無法訪問此數(shù)據(jù)。
面向?qū)ο缶幊陶Z言的特征

類:導(dǎo)致面向?qū)ο缶幊痰腃 ++構(gòu)建塊是一個(gè)類。它是用戶定義的數(shù)據(jù)類型,它擁有自己的數(shù)據(jù)成員和成員函數(shù),可以通過創(chuàng)建該類的實(shí)例來訪問和使用它們。類就像對象的藍(lán)圖。
例如:考慮汽車類別??赡苡性S多不同名稱和品牌的汽車,但它們都會(huì)共享一些共同的屬性,例如所有汽車都有4個(gè)車輪,速度限制,里程范圍等。因此,這里的汽車是類別和車輪,速度限制,里程是他們的屬性。
類是具有數(shù)據(jù)成員和成員函數(shù)的用戶定義的數(shù)據(jù)類型。
數(shù)據(jù)成員是數(shù)據(jù)變量,成員函數(shù)是用于操縱這些變量的函數(shù),這些數(shù)據(jù)成員和成員函數(shù)共同定義了類中對象的屬性和行為。
在上面的Car類示例中,數(shù)據(jù)成員將是限速,里程等,并且成員功能可以施加制動(dòng),增加速度等。
我們可以說C ++中的類是代表一組對象的藍(lán)圖,這些對象具有一些共同的屬性和行為。
對象:對象是具有某些特征和行為的可識別實(shí)體。對象是類的實(shí)例。當(dāng)定義了一個(gè)類時(shí),不分配內(nèi)存,而是在實(shí)例化(即創(chuàng)建對象)時(shí)分配內(nèi)存。

對象占用內(nèi)存中的空間,并具有關(guān)聯(lián)的地址,例如Pascal中的記錄或結(jié)構(gòu)或C中的并集。
執(zhí)行程序時(shí),對象通過相互發(fā)送消息進(jìn)行交互。
每個(gè)對象都包含數(shù)據(jù)和用于操縱數(shù)據(jù)的代碼。對象可以進(jìn)行交互而不必知道彼此的數(shù)據(jù)或代碼的細(xì)節(jié),知道對象接受的消息類型和對象返回的響應(yīng)類型就足夠了。
封裝:通常,封裝被定義為將數(shù)據(jù)和信息包裝在一個(gè)單元內(nèi)。在面向?qū)ο蟮木幊讨?,封裝被定義為將數(shù)據(jù)和操縱它們的功能綁定在一起。
考慮一個(gè)封裝的真實(shí)示例,在公司中,有不同的部分,例如帳戶部分,財(cái)務(wù)部分,銷售部分等。財(cái)務(wù)部分處理所有財(cái)務(wù)交易,并保留與財(cái)務(wù)相關(guān)的所有數(shù)據(jù)的記錄。同樣,銷售部門處理所有與銷售有關(guān)的活動(dòng),并保留所有銷售記錄?,F(xiàn)在可能會(huì)出現(xiàn)這樣的情況,當(dāng)財(cái)務(wù)部門的官員出于某種原因需要某個(gè)特定月份的所有銷售數(shù)據(jù)時(shí)。在這種情況下,不允許他直接訪問銷售部分的數(shù)據(jù)。他將首先必須聯(lián)系銷售部門的其他人員,然后要求他提供特定數(shù)據(jù)。這就是封裝。

用C ++封裝
封裝還導(dǎo)致數(shù)據(jù)抽象或隱藏。由于使用封裝也隱藏了數(shù)據(jù)。在上面的示例中,任何部分(例如銷售,財(cái)務(wù)或帳戶)的數(shù)據(jù)都從其他任何部分隱藏。
抽象:數(shù)據(jù)抽象是C ++中面向?qū)ο缶幊痰淖罨竞妥钪匾墓δ苤?。抽象意味著僅顯示基本信息并隱藏細(xì)節(jié)。數(shù)據(jù)抽象是指僅向外界提供有關(guān)數(shù)據(jù)的基本信息,隱藏背景細(xì)節(jié)或?qū)崿F(xiàn)。
考慮一個(gè)男人駕駛汽車的真實(shí)例子。這個(gè)人只知道按下加速器會(huì)增加汽車的速度,或者踩剎車會(huì)停止汽車,但是他不知道在按下加速器時(shí)速度實(shí)際上是如何增加的,他不知道汽車的內(nèi)部機(jī)制或在汽車上實(shí)施油門,制動(dòng)器等。這就是抽象。
(1)使用類的抽象:我們可以使用類在C ++中實(shí)現(xiàn)抽象。該類幫助我們使用可用的訪問說明符對數(shù)據(jù)成員和成員函數(shù)進(jìn)行分組。一個(gè)類可以決定哪個(gè)數(shù)據(jù)成員對外界可見,而哪個(gè)則不可見。
(2)頭文件中的抽象:C ++中的另一種抽象類型可以是頭文件。例如,考慮math.h頭文件中存在的pow()方法。每當(dāng)我們需要計(jì)算數(shù)字的冪時(shí),我們只需調(diào)用math.h頭文件中存在的函數(shù)pow()并將數(shù)字作為參數(shù)傳遞,而無需了解該函數(shù)實(shí)際根據(jù)其計(jì)算數(shù)字的冪的底層算法。
多態(tài)性:?“多態(tài)性”一詞意味著具有多種形式。簡而言之,我們可以將多態(tài)定義為消息以多種形式顯示的能力。
一個(gè)人同時(shí)可以具有不同的特征。像男人一樣,是父親,丈夫,雇員。因此,同一個(gè)人在不同情況下具有不同的行為。這稱為多態(tài)性。
一個(gè)操作在不同情況下可能表現(xiàn)出不同的行為。行為取決于操作中使用的數(shù)據(jù)類型。
C ++支持運(yùn)算符重載和函數(shù)重載。
(1)運(yùn)算符重載:使運(yùn)算符在不同情況下表現(xiàn)出不同行為的過程稱為運(yùn)算符重載。
(2)函數(shù)重載:函數(shù)重載使用單個(gè)函數(shù)名來執(zhí)行不同類型的任務(wù)。
多態(tài)被廣泛用于實(shí)現(xiàn)繼承。
示例:假設(shè)我們必須編寫一個(gè)函數(shù)以添加一些整數(shù),有時(shí)有2個(gè)整數(shù),有時(shí)有3個(gè)整數(shù)。我們可以用具有不同參數(shù)的相同名稱編寫加法,將根據(jù)參數(shù)調(diào)用相關(guān)方法。

繼承:一個(gè)類從另一個(gè)類派生屬性和特性的能力稱為繼承。繼承是面向?qū)ο缶幊痰淖钪匾δ苤弧?/p>
子類:從另一個(gè)類繼承屬性的類稱為子類或派生類。
超類:其屬性被子類繼承的類稱為基類或超類。
可重用性:繼承支持“可重用性”的概念,即,當(dāng)我們要?jiǎng)?chuàng)建一個(gè)新類并且已經(jīng)有一個(gè)包含所需代碼的類時(shí),我們可以從現(xiàn)有類中派生新類。通過這樣做,我們可以重用現(xiàn)有類的字段和方法。
示例:狗,貓,??梢允莿?dòng)物基類的派生類。

動(dòng)態(tài)綁定:在動(dòng)態(tài)綁定中,響應(yīng)函數(shù)調(diào)用而執(zhí)行的代碼在運(yùn)行時(shí)確定。C ++具有支持此功能的虛函數(shù)。
消息傳遞:對象之間通過相互發(fā)送和接收信息來相互通信。對象的消息是對過程執(zhí)行的請求,因此將在接收對象中調(diào)用生成所需結(jié)果的函數(shù)。消息傳遞涉及指定對象的名稱,函數(shù)的名稱以及要發(fā)送的信息。

每天學(xué)點(diǎn)小知識,希望對你有幫助~
另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
編程學(xué)習(xí)視頻分享:
