物件導向的三個基本特徵是:封裝、繼承、多型。
我們知道,封裝可以隱藏實現細節,使得**模組化;繼承可以擴充套件已存在的**模組(類);它們的目的都是:**重用。而多型則是為了實現另乙個目的——介面重用!多型的作用,就是為了類在繼承和派生的時候,保證使用「家譜」中任一類的例項的某一屬性時的正確呼叫。
封裝:
封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中(我們稱之為類)。被封裝的物件通常被稱為抽象資料型別。
封裝的意義:
封裝的意義在於保護或者防止**(資料)被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它的函式意外的修改。
1. 保護資料成員,不讓類以外的程式直接訪問或修改,只能通過提供的公共的介面訪問==>資料封裝。
2. 方法的細節對使用者是隱藏的,只要介面不變,內容的修改不會影響到外部的呼叫者==>方法封裝。
3. 當物件含有完整的屬性和與之對應的方法時稱為封裝。
4. 從物件外面不能直接訪問物件的屬性,只能通過和該屬性對應的方法訪問。
5. 物件的方法可以接收物件外面的訊息。
類成員的訪問修飾符:
即類的方法和成員變數的訪問控制符,乙個類作為整體物件不可見,並不代表他的所有域和方法也對程式其他部分不可見,需要有他們的訪問修飾符判斷。
許可權如下:
訪問修飾符
同乙個類
同包不同包,子類
不同包,非子類
private
protected
public
預設繼承:
繼承主要實現重用**,節省開發時間。
1、c#中的繼承符合下列規則:
繼承是可傳遞的。如果c從b中派生,b又從a中派生,那麼c不僅繼承了b中宣告的成員,同樣也繼承了a中的成員。object類作為所有類的基類。
派生類應當是對基類的擴充套件。派生類可以新增新的成員,但不能除去已經繼承的成員的定義。
建構函式和析構函式不能被繼承。除此之外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。
派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因為這派生類刪除了這些成員,只是不能再訪問這些成員。
類可以定義虛文法、虛屬性以及虛索引指示器,它的派生類能夠過載這些成員,從而實現類可以展示出多型性。
2、new關鍵字
如果父類中宣告了乙個沒有friend修飾的protected或public方法,子類中也宣告了同名的方法。則用new可以隱藏父類中的方法。(不建議使用)
3、base關鍵字
base 關鍵字用於從派生類中訪問基類的成員:
呼叫基類上已被其他方法重寫的方法。
指定建立派生類例項時應呼叫的基類建構函式。
多型:
1、「乙個介面,多種方法」
同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。
多型的三個條件:
a. 繼承的存在(繼承是多型的基礎,沒有繼承就沒有多型).
b. 子類重寫父類的方法(多型下呼叫子類重寫的方法).
c. 父類引用變數指向子類物件(子類到父類的型別轉換).
過載(overload)和重寫(override)是實現多型的兩種主要方式。
2、實現多型:
介面多型性。
繼承多型性。
通過抽象類實現的多型性。
封裝,繼承,多型
一 1 封裝 該隱藏隱藏,該公開的公開 屬性隱藏,同時提供get set方法 有些方法應該隱藏 方法宣告公開,實現隱藏。實現的改變對架構的影響最小 2 繼承 一般 特殊 單繼承 乙個類最多只能有乙個直接父類。類之間可以形成樹狀關係 根據訪問許可權,子類如果可以訪問父類的屬性和方法,就能繼承 priv...
繼承 封裝 多型
一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。封裝的意義 封裝的意義在於保護或者防止 資料 被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它...
封裝 繼承 多型
一 封裝 封裝是實現物件導向程式設計的第一步,封裝就是將資料或函式等集合在乙個個的單元中 我們稱之為類 被封裝的物件通常被稱為抽象資料型別。封裝的意義 封裝的意義在於保護或者防止 資料 被我們無意中破壞。在物件導向程式設計中資料被看作是乙個中心的元素並且和使用它的函式結合的很密切,從而保護它不被其它...