C 三大特性之 封裝 繼承 多型

2022-01-18 08:27:31 字數 1886 閱讀 9372

一、封裝:

封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中(我們稱之為類)。被封裝的物件通常被稱為抽象資料型別。

封裝的意義:

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

封裝提供了乙個有效的途徑來保護資料不被意外的破壞。相比我們將資料(用域來實現)在程式中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。私有的資料可以用兩種方式來間接的控制。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。

使用屬性不僅可以控制訪問資料的合法性,同時也提供了「讀寫」、「唯讀」、「只寫」靈活的操作方法。

把乙個或多個專案封閉在乙個物理的或者邏輯的包中。可以為類庫型別,進行引用和呼叫。 

訪問修飾符: 

private:只有類本身能訪問.

protected:類和派生類可以訪問.

internal:只有同乙個專案中的類可以訪問.

protected internal:是protected和internal的結合. 

public:完全訪問.

二、繼承:

繼承主要實現重用**,節省開發時間。

1、c#中的繼承符合下列規則:

繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object類作為所有類的基類。如a,b,c三個類,a:b  b:c 則a類會繼承b和c類中的所有成員。左子右父,子繼承父。

派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承的成員的定義。

建構函式和析構函式不能被繼承。除此之外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。

派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因為這派生類刪除了這些成員,只是不能再訪問這些成員。

類可以定義虛文法、虛屬性以及虛索引指示器,它的派生類能夠過載這些成員,從而實現類可以展示出多型性。

2、new關鍵字

如果父類中宣告了乙個沒有friend修飾的protected或public方法,子類中也宣告了同名的方法。則用new可以隱藏父類中的方法。(不建議使用)

3、base關鍵字

base 關鍵字用於從派生類中訪問基類的成員:

呼叫基類上已被其他方法重寫的方法。

指定建立派生類例項時應呼叫的基類建構函式。

三、多型

通過繼承實現的不同物件呼叫相同的方法,表現出不同的行為,稱之為多型。

1、多型:同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。在執行時,可以通過指向基類的指標,來呼叫實現派生類中的方法。

編譯時的多型性:

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

執行時的多型性:

執行時的多型性就是指直到系統執行時,才根據實際情況決定實現何種操作。c#中,執行時的多型性通過虛成員實現。 

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

2、實現多型:

介面多型性。

繼承多型性。

通過抽象類實現的多型性。

3、override關鍵字:

重寫父類中的virtual修飾的方法,實現多型。

C 三大特性之封裝,繼承,多型

在嵌入式的軟體開發過程中大多是使用c這種面向過程的語言來開發,從效率上來說c語言已經非常高了,使用在硬體資源比較緊張的嵌入式系統來說是最好不過的選擇了,隨著硬體效能的提公升,以及硬體 的下降,c 逐漸應用於嵌入式系統中了,c 語言在編譯器開優化的情況下,效率已經接近c語言了,並且提供了更高階的語言特...

C 三大特性 封裝,繼承,多型

c 三大特性 封裝,繼承,多型 封裝 定義 封裝就是將抽象得到的資料和行為相結合,形成乙個有機的整體,也就是將資料與運算元據的源 進行有機的結合,形成類,其中資料和函式都是類的成員,目的在於將物件的使用者和設計者分開,以提高軟體的可維護性和可修改性 特性 1.結合性,即是將屬性和方法結合 2.資訊隱...

三大特性 封裝,繼承,多型

重寫方法的規則 1 引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載。2 返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。3 訪問修飾符的限制一定要大於被重寫方法的訪問修飾符 public protected default private 4 重寫方法一定...