一、首先理解一下什麼叫多型:
同一種操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。舉乙個形象的例子,在我們聽**會的時候,當指揮發出開始的訊號,不同的樂器收到相同的訊號,但是他們產生不同的行為:鋼琴發出的是鋼琴的聲音,小號發出的是小號的聲響。或者,如果把每個動物當成乙個物件,那麼他們都有乙個方法叫做吃,但是他們卻產生不同的行為。
如圖:
二、多型的實現。
在c#中,多型性通過派生類覆寫基類中的虛函式型方法來實現。那麼怎樣編寫虛函式呢?
基類的方法要加上關鍵字virtual後變成虛方法,才可以被重寫,從而實現物件導向最重要的特徵——多型性,即基類可以使用派生類的方法。
public class animal
} public class cat : animal
} public class dog : animal
} static void main(string args)
執行結果如下:
C 中的多型
封裝 繼承 多型,物件導向的三大特性,前兩項理解相對容易,但要理解多型,特別是深入的了解,對於初學者而言可能就會有一定困難了。我一直認為學習oo的最好方法就是結合實踐,封裝 繼承在實際工作中的應用隨處可見,但多型呢?也許未必,可能不經意間用到也不會把它跟 多型 這個詞對應起來。在此拋磚引玉,大家討論...
C 中的多型
c 中的多型分為靜多型和動多型 也就是靜態繫結和動態繫結兩種現象 靜動的區別主要在於這種繫結發生在編譯期還是執行期,發生在編譯期的是靜態繫結,也就是靜多型 發生在執行期的則是動態繫結,也就是動多型。一 靜多型可以通過模板和函式過載來實現,下面舉兩個例子 1 函式模板 template t max c...
C 中的多型
定義 同樣的訊息被不同型別的物件接收時產生不同的行為。原理 1.編譯時多型 靜態繫結 2.執行時多型 動態繫結 分類 1.過載 包括函式過載,運算子過載 靜態繫結 2.覆蓋 包括子類和父類間虛函式 虛析構函式和純虛函式 動態繫結 要求 1.函式名相同 2.引數不同 栗子 include using ...