繼承、封裝、多態

一、封裝:

  封裝是實現面向對象程序設計的第一步,封裝就是將數據或函數等集合在一個個的單元中(我們稱之爲類)。被封裝的對象通常被稱爲抽象數據類型。

封裝的意義:
  封裝的意義在於保護或者防止代碼(數據)被我們無意中破壞。在面向對象程序設計中數據被看作是一箇中心的元素並且和使用它的函數結合的很密切,從而保護它不被其它的函數意外的修改。

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

  使用屬性不僅可以控制存取數據的合法性,同時也提供了“讀寫”、“只讀”、“只寫”靈活的操作方法。

訪問修飾符:

Private:只有類本身能存取.
Protected:類和派生類可以存取.
Internal:只有同一個項目中的類可以存取.
Protected Internal:是Protected和Internal的結合.
Public:完全存取.

二、繼承:

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

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

繼承是可傳遞的。如果C從B中派生,B又從A中派生,那麼C不僅繼承了B中聲明的成員,同樣也繼承了A中的成員。Object類作爲所有類的基類。
派生類應當是對基類的擴展。派生類可以添加新的成員,但不能除去已經繼承的成員的定義。
構造函數和析構函數不能被繼承。除此之外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。
派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這並不因爲這派生類刪除了這些成員,只是不能再訪問這些成員。
類可以定義虛文法、虛屬性以及虛索引指示器,它的派生類能夠重載這些成員,從而實現類可以展示出多態性。
  2、new關鍵字

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

  3、base關鍵字

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

調用基類上已被其他方法重寫的方法。
指定創建派生類實例時應調用的基類構造函數。
三、多態

  1、多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。

  編譯時的多態性:

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

  運行時的多態性:

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

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

  2、實現多態:

接口多態性。
繼承多態性。
通過抽象類實現的多態性。
  3、override關鍵字:

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

原文:
http://www.cnblogs.com/mountain-mist/articles/1214996.html

發佈了32 篇原創文章 · 獲贊 13 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章