C 物件導向程式設計(下)

2021-10-10 10:18:20 字數 3205 閱讀 2058

物件導向程式設計的三大特徵:

封裝是基礎,繼承是關鍵,多型是補充,而多型又必須存在於繼承的環境中,多型的實現受到繼承性的支援。

封裝(encapsulation)

定義:(1)將資料抽象的外部介面與內部實現的細節清楚地分開

(2)封裝就是將抽象得到的資料和行為相結合,形成乙個有機的整體

作用:(1)可以隱藏實現細節,使得**模組化。

(2)封裝的目的是增強安全性和簡化程式設計,使用者不必了解具體的實現細節,而只是要通過外部介面,特定的訪問許可權來使用類的成員。

(4)封裝的意義在於保護或者防止**(資料)被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它的函式意外的修改。

繼承(inherit[ance])

繼承是類與類之間共享資料和方法的一種機制,被繼承的類稱為父類,也叫基類或超類;繼承的類稱為子類,也叫派生類。繼承是實現**重用的重要手段,

定義:(1)子類可以從父類繼承屬性和操作,提高程式設計效率。

(2)通過繼承關係利用已有類構造新類。

作用:**重用

(1)避免**重複開發,減少**和資料冗餘。

(2)通過增強一致性來減少模組間的介面和介面。

多型(polymorphism)

定義:(1)不同的物件收到相同的訊息時產生多種不同的行為方式。

(2)多型性是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術。

(3)允許將子類型別的指標賦值給父類型別的指標。

(4)同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。

作用:(1)編譯時的多型性

通過函式過載和運算子過載實現。

對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。

(2)執行時的多型性

通過類的繼承關係和虛函式來實現。

程式在執行前根據函式名和引數無法確定應該呼叫哪個函式,必須在程式執行的過程中根據具體的情況來動態確定。

編譯時的多型性為我們提供了執行速度快的特點,而執行時的多型性則帶來了高度靈活和抽象的特點。

過載(overload)

定義:將語義、功能相似的幾個函式用同乙個名字表示,但引數不同(包括型別、個數不同,或兩者都不同)

過載與多型是緊密相連的。

c++封裝

封裝:隱藏物件的屬性和實現細節,僅對外公開介面和物件進行互動,將資料和運算元據的方法進行有機結合。c++的封裝相當於是class+訪問限定符。語法:

class 類名

公共許可權 public :成員類 內部可以訪問 類外部可以訪問

保護許可權 protected : 內部可以訪問 類外不可訪問

私有許可權 private :內部可以訪問 類外不可訪問

protected 與private區別

主要在繼承方面:protected :父親的東西 繼承人也可以訪問;private:父親的小秘密,繼承人不可以訪問的。

class 預設為private

例、c++封裝的例子,**如下:

#include

#include

using namespace std;

class person

string getname()

void setage(int age);

int main();

繼承方式限定了基類成員在派生類中的訪問許可權,包括 public(公有的)、private(私有的)和 protected(受保護的)。繼承方式項是可選項,如果不寫,預設為 private(成員變數和成員函式預設也是 private)。

繼承的簡要示意如下:

//a類為基類

class a;

// b 繼承於 a

class b : public a ;

b類繼承自a類也就是a類派生了b類。a類稱為基類或父類,b類稱為派生類或子類。

例、演示c++類的繼承的例子,假設有乙個基類 shape,rectangle 是它的派生類。**如下:

#include

using namespace std;

// 基類

class shape 

void setheight(int h)

protected:

int width;

int height;

};// 派生類

class rectangle: public shape

};int main(void)

執行之,參見下圖:

不同的繼承方式會影響基類成員在派生類中的訪問許可權。

1) public繼承方式 

基類中所有 public 成員在派生類中為 public 屬性;

基類中所有 protected 成員在派生類中為 protected 屬性;

基類中所有 private 成員在派生類中不能使用。

2) protected繼承方式 

基類中的所有 public 成員在派生類中為 protected 屬性;

基類中的所有 protected 成員在派生類中為 protected 屬性;

基類中的所有 private 成員在派生類中不能使用。

3) private繼承方式 

基類中的所有 public 成員在派生類中均為 private 屬性;

基類中的所有 protected 成員在派生類中均為 private 屬性;

基類中的所有 private 成員在派生類中不能使用。

c++多型

多型是指不同繼承關係的類物件去呼叫同一函式時,產生了不同的行為。

例如:student類繼承了person類。 person物件買票全價,student物件買票半價。這就是多型行為。

實現乙個簡單的多型例子:

#include

using namespace std;

class person

};class student : public person

};void func(person& people)

int main()

執行之,參見下圖:

c 物件導向程式設計 物件導向

什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...

C 物件導向程式設計

1.1 類與物件 物件 object 是類 class 的乙個例項 instance 如果將物件比作房子,那麼類就是房子的設計圖紙。所以物件導向程式設計的重點是類的設計,而不是物件的設計。類可以將資料和函式封裝在一起,其中函式表示了類的行為 或稱服務 類提供關鍵字public protected 和...

C 物件導向程式設計

物件導向程式設計 以物件為中心,將資料和方法封裝在一起。三要素 抽象繼承 多型 五個基本原則 單一職責原則 就乙個類而言,應該有且僅有乙個引起它變化的原因。開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。黎克特制替換換原則 子類應當可以替換父類並出現在父類能夠出現的...