一、封裝:
封裝是實現面向對象程序設計的第一步,封裝就是將數據或函數等集合在一個個的單元中(我們稱之為類)。被封裝的對象通常被稱為抽象數據類型。
封裝的意義:
封裝的意義在於保護或者防止代碼(數據)被我們無意中破壞。在面向對象程序設計中數據被看作是一個中心的元素並且和使用它的函數結合的很密切,從而保護它不被其它的函數意外的修改。
封裝提供了一個有效的途徑來保護數據不被意外的破壞。相比我們將數據(用域來實現)在程序中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。私有的數據可以用兩種方式來間接的控制。第一種方法,我們使用傳統的存、取方法。第二種方法我們用屬性(property)。
使用屬性不僅可以控制存取數據的合法性,同時也提供了“讀寫”、“只讀”、“只寫”靈活的操作方法。
訪問修飾符:
Private:只有類本身能存取.
Protected:類和派生類可以存取.
Internal:只有同一個項目中的類可以存取.
Protected Internal:是Protected和Internal的結合.
Public:完全存取.二、繼承:
繼承主要實現重用代碼,節省開發時間。
1、C#中的繼承符合下列規則:
2、new關鍵字
如果父類中聲明了一個沒有friend修飾的protected或public方法,子類中也聲明了同名的方法。則用new可以隱藏父類中的方法。(不建議使用)
3、base關鍵字
base 關鍵字用於從派生類中訪問基類的成員:
三、多態
1、多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。
編譯時的多態性:
編譯時的多態性是通過重載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。
運行時的多態性:
運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。C#中,運行時的多態性通過虛成員實現。
編譯時的多態性為我們提供了運行速度快的特點,而運行時的多態性則帶來了高度靈活和抽象的特點。2、實現多態:
3、override關鍵字:
重寫父類中的virtual修飾的方法,實現多態。