C++中封裝與信息隱藏的詳解及其作用介紹
概述
封裝是面向?qū)ο缶幊讨械陌褦?shù)據(jù)和操作數(shù)據(jù)的函數(shù)綁定在一起的一個(gè)概念. 這樣能避免受到外界干擾和誤用.
數(shù)據(jù)隱藏包括數(shù)據(jù)封裝和數(shù)據(jù)抽象兩部分. 數(shù)據(jù)封裝是一種把數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)捆綁在一起的機(jī)制. 數(shù)據(jù)抽象是一種僅向用戶暴露接口而把具體的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái)的機(jī)制.
類(lèi)的公用接口
C++ 通過(guò)類(lèi)來(lái)實(shí)現(xiàn)封裝性, 把數(shù)據(jù)和與這些數(shù)據(jù)有關(guān)的操作封裝在一個(gè)類(lèi)中. 在聲明了一個(gè)類(lèi)以后, 用戶主要是通過(guò)調(diào)用公用的成員函數(shù)來(lái)實(shí)現(xiàn)類(lèi)提供的功能, 稱(chēng)為消息傳遞.
公用成員函數(shù)是用戶使用類(lèi)的公用接口 (public interface), 或者說(shuō)是類(lèi)的對(duì)外接口. 在類(lèi)外不能直接訪問(wèn)私有數(shù)據(jù)成員, 但可以通過(guò)調(diào)用公用成員函數(shù)來(lái)引用甚至修改私有數(shù)據(jù)成員.
類(lèi)的私有實(shí)現(xiàn)
用戶不必關(guān)系這些功能實(shí)現(xiàn)的細(xì)節(jié), 而只需要知道調(diào)用哪個(gè)函數(shù)會(huì)得到什么結(jié)果, 實(shí)現(xiàn)什么功能即可. 通過(guò)成員函數(shù)對(duì)數(shù)據(jù)成員進(jìn)行操作稱(chēng)為類(lèi)的實(shí)現(xiàn). 實(shí)現(xiàn)的細(xì)節(jié)對(duì)用戶是隱蔽的. (信息隱藏)
類(lèi)中被操作的數(shù)據(jù)是私有的, 實(shí)現(xiàn)的細(xì)節(jié)對(duì)用戶是隱蔽的. 這稱(chēng)為私有實(shí)現(xiàn). (private implementation)
類(lèi)的公用接口與私有實(shí)現(xiàn)的分離形成了信息隱蔽. 將接口與實(shí)現(xiàn)分離是軟件工程的一個(gè)最基本的原則.
優(yōu)點(diǎn):
- 如果想擴(kuò)充累的功能, 只需要修改本類(lèi)中有關(guān)的數(shù)據(jù)成員和它有關(guān)的成員函數(shù). 程序中類(lèi)外的部分可以不必修改
- 如果在編譯時(shí)發(fā)現(xiàn)類(lèi)中的數(shù)據(jù)讀寫(xiě)有錯(cuò), 不必檢查整個(gè)程序. 只需檢查本類(lèi)中訪問(wèn)這些數(shù)據(jù)的少數(shù)成員函數(shù)
方法與消息
方法 (method) 指類(lèi)的成員函數(shù)在面向?qū)ο蟪绦蚶碚撝斜环Q(chēng)為方法, 是指對(duì)數(shù)據(jù)的操作. 一個(gè) “方法” 對(duì)應(yīng)一種操作. 只有被聲明為公用的方法才能被外界所激活.
消息指對(duì)公用函數(shù)的調(diào)用. 外界是通過(guò)發(fā) “消息” 來(lái)激活有關(guān)方法的. 調(diào)用對(duì)象的成員函數(shù), 就是向?qū)ο蟀l(fā)出的一個(gè) “消息”. 通知它執(zhí)行其中的方法.
面向?qū)ο蟮奶攸c(diǎn):
- 封裝性: 各個(gè)對(duì)象間相對(duì)獨(dú)立
- 抽象性: 類(lèi)是對(duì)象的抽象, 對(duì)象是類(lèi)的實(shí)例
- 繼承性: 解決重用問(wèn)題
- 多態(tài)性: 由繼承產(chǎn)生的相關(guān)的不同的類(lèi). 其對(duì)象對(duì)同一消息會(huì)做出不同的響應(yīng)
到此這篇關(guān)于C++中封裝與信息隱藏的詳解及其作用介紹的文章就介紹到這了,更多相關(guān)C++ 封裝 信息隱藏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)ATM系統(tǒng)程序的完整代碼
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)ATM系統(tǒng)程序的完整代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Pipes實(shí)現(xiàn)LeetCode(194.轉(zhuǎn)置文件)
這篇文章主要介紹了Pipes實(shí)現(xiàn)LeetCode(194.轉(zhuǎn)置文件),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08C語(yǔ)言項(xiàng)目小學(xué)生數(shù)學(xué)考試系統(tǒng)參考
今天小編就為大家分享一篇關(guān)于C語(yǔ)言項(xiàng)目小學(xué)生數(shù)學(xué)考試系統(tǒng)參考,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02C++關(guān)鍵字thread_local學(xué)習(xí)筆記
這篇文章主要為大家介紹了C++關(guān)鍵字thread_local學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10基于c++強(qiáng)制類(lèi)型轉(zhuǎn)換的(總結(jié))詳解
本篇文章對(duì)C++中的強(qiáng)制類(lèi)型轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05C語(yǔ)言關(guān)于時(shí)間復(fù)雜度詳解
大家好,本篇文章主要講的是C語(yǔ)言關(guān)于時(shí)間復(fù)雜度詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01總結(jié)C語(yǔ)言中const關(guān)鍵字的使用
一起雖然學(xué)過(guò)c語(yǔ)言,但是并沒(méi)有寫(xiě)過(guò)太多的代碼,最近想要拾起c語(yǔ)言,就寫(xiě)了一些代碼,但是對(duì)const關(guān)鍵字比較陌生,這里總結(jié)一下,方法自己和大家有需要的時(shí)候參考借鑒,下面跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11C++數(shù)位DP復(fù)雜度統(tǒng)計(jì)數(shù)字問(wèn)題示例詳解
這篇文章主要為大家介紹了利用C++數(shù)位DP的復(fù)雜度來(lái)統(tǒng)計(jì)數(shù)字問(wèn)題的示例實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升值加薪2021-11-11C++中fstream,ifstream及ofstream用法淺析
這篇文章主要介紹了C++中fstream,ifstream及ofstream用法,適合C++初學(xué)者學(xué)習(xí)文件流的操作,需要的朋友可以參考下2014-08-08