封裝
: 封裝能夠隱藏實現細節,使得代碼模塊化
封裝是把過程和數據包圍起來,對數據的訪問只能經過已定義的界面。
在面向對象編程上可理解爲:把客觀事物封裝成抽象的類,而且類能夠把本身的數據和方法只讓可信的類或者對象操做,對不可信的進行信息隱藏。github
數據抽象是指,只向外界提供關鍵信息,並隱藏其後臺的實現細節,即只表現必要的信息而不呈現細節。
數據抽象是一種依賴於接口和實現分離的編程(設計)技術。編程
數據抽象有兩個重要的優點:安全
若是隻在類的私有部分定義數據成員,編寫該類的做者就能夠隨意更改數據。若是實現發生改變,則只須要檢查類的代碼,看看這個改變會致使哪些影響。若是數據是公有的,則任何直接訪問舊錶示形式的數據成員的函數均可能受到影響。模塊化
全部的 C++ 程序都有如下兩個基本要素:函數
封裝是面向對象編程中的把數據和操做數據的函數綁定在一塊兒的一個概念,這樣能避免受到外界的干擾和誤用,從而確保了安全。設計
數據封裝是一種把數據和操做數據的函數捆綁在一塊兒的機制,數據抽象是一種僅向用戶暴露接口而把具體的實現細節隱藏起來的機制。code
C++ 經過建立類來支持封裝和數據隱藏(public、protected、private)。咱們已經知道,類包含私有成員(private)、保護成員(protected)和公有成員(public)成員。默認狀況下,在類中定義的全部項目都是私有的。對象
接口
: 接口描述了類的行爲和功能,而不須要完成類的特定實現。
C++ 接口是使用抽象類來實現的,抽象類與數據抽象互不混淆,數據抽象是一個把實現細節與相關的數據分離開的概念。繼承
若是類中至少有一個函數被聲明爲純虛函數,則這個類就是抽象類。純虛函數是經過在聲明中使用 "= 0" 來指定的,以下所示:
class Box { public: // 純虛函數 virtual double getVolume() = 0; private: double length; // 長度 double breadth; // 寬度 double height; // 高度 };
設計抽象類(一般稱爲 ABC)的目的,是爲了給其餘類提供一個能夠繼承的適當的基類。抽象類不能被用於實例化對象,它只能做爲接口使用。若是試圖實例化一個抽象類的對象,會致使編譯錯誤。所以,若是一個 ABC 的子類須要被實例化,則必須實現每一個虛函數,這也意味着 C++ 支持使用 ABC 聲明接口。若是沒有在派生類中重載純虛函數,就嘗試實例化該類的對象,會致使編譯錯誤。