物件導向語言三大特性(c )

2021-10-01 05:39:19 字數 1789 閱讀 3626

封裝即通過類將物件的屬性以及方法結合起來,僅對外提供介面。

封裝的好處

繼承:不同繼承方式下派生類的繼承模型,分為共有繼承和私有繼承兩種。

公有繼承

理解

共有繼承體現」是乙個「含義。公有繼承中對基類所適用的任何東西,也都適用於派生類。

如:雖然正方形是特殊的矩形,但是物件改變時,長方形長寬不需要同時變而正方形需要同時變,所以不能說正方形共有繼承於矩形。

當類d從類b公有繼承時,每乙個d是乙個b,反之不成立。如:

class

person

private

:char _name[20]

;char _addr[30]

;int _age;};

class

student

:public person

;

可以說每個學生是乙個人,但不可以說每個人都是學生。

區分介面繼承和實現繼承

純虛函式:必須在繼承的類中重新宣告,並且在抽象類中常無定義。【純虛函式使基類成為抽象類,不可例項化】

非純虛函式:子類必須支援這個函式的實現,若子類中不提供實現方法則採用基類中的。

非虛函式:不會改變行為,不可以在子類中重新定義。為這個類建立一種特殊的不變性。

私有繼承

理解

私有繼承體現「用…實現」,如果d私有繼承自b,d的物件用b的物件實現,不存在概念上的關係。

繼承和模板

對於乙個類而言,若對於不同的型別,其方式完全不同,則更加適合用繼承。【繼承不適合建立堆疊】

當物件型別不影響類中函式的行為時,使用模板生成這一組類。

理解

多型即某乙個事物在不同的情況體現不同的狀態,即為多型。可分為靜態型別的多型和動態型別的多型。

c++中實現多型

靜態多型是通過過載和模板技術實現,在編譯的時候確定。動態多型通過虛函式和繼承關係來實現,執行動態繫結,在執行的時候確定。

c++中共有三種實現多型的方式。。第一種是函式過載;第二種是模板函式;第三種是虛函式(函式覆蓋)。

前提

重寫

若用final關鍵字修飾虛函式,則虛函式不能被派生類重寫。

什麼時候把基類虛構函式設為虛函式?

若派生類中涉及資源管理,那麼最好將基類中析構函式設為虛函式。此時一旦沒有構成重寫,編譯器不會報錯但不會實現多型。

例外

體現

在**執行時,根據基類的指標(引用)指向不同子類的物件,呼叫對應的子類的虛函式。

如:

class

person

virtual

void

show()

private

:char _name[20]

;char _addr[30]

;int _age;};

class

student

:public person

virtual

void

show()

private

:char _name[20]

;char _addr[30]

;int _age;};

intmain()

C 物件導向三大特性

封裝就是將成員變數和成員方法等集合在乙個個的類中,通過給類及類中的成員變數 屬性和方法設定不同的訪問修飾符 public protected internal protected internal private 來控制它們的作用範圍,使用時呼叫它的方法,或者給它的變數賦值。封裝的意義在於保護或者防...

物件導向三大特性

什麼是物件導向呢?之前我們做一件事的時候,常常是確定,先幹什麼,然後怎麼做,最後可以完事了。其實我們不妨這麼想一下,我們做事的時候是可以這樣的 這件事中涉及了什麼物件角色?如果我要把這件事做成那麼就需要物件之間是如何協作的?第二種方法,就是今天說的物件導向的方法了,好處正在慢慢體會。今天我想說的物件...

物件導向三大特性

0x00 嘮嘮叨叨 只是做乙個概念的記錄 0x01 物件導向的三大特性 n 封裝 把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。類將成員變數和成員函式封裝在類的內部,根據需要設定訪問許可權,通過成員函式管理內部狀態。n 繼承 繼承所表達的是類...