多態 就是說同一個對象,在不同的情境有不同的行為,也就是說執行不同的代碼。 當然這個不同的情境是指類的指標指向的實際對象是什麼,那麼就調用這個實際對象的方法。
在c#語言中 實現多態的方法有三種
1 重寫父類的虛方法,
2 介面繼承
3 抽象類別繼承
要是你能把下邊的例子看懂了,說明你有一個很大的進步了。下邊僅僅以重寫父類的虛方法來說明一下多態。
using System;using System.Data;using System.Text;class programe{ public delegate void mydelgatemath(); static void Main(string[] arg) { try { baseClass tempFath ;baseClass fathobj = new baseClass() ;fathobj.say() ;sonclass sonobj = new sonclass() ; sonobj.say() ;son2class son2obj=new son2class() ;son2obj.say() ;tempFath = sonobj ;tempFath.say() ;tempFath = son2obj ;tempFath.say();Console.WriteLine("上邊是學習,下邊是多態實際例子,以及應用情境");baseClass[] famliys = new baseClass[3]{fathobj ,sonobj ,son2obj};foreach(baseClass o in famliys){ o.say() ;} } catch (Exception err) { Console.WriteLine(err.Message); } } public class baseClass {public baseClass(){Console.WriteLine("my name am【"+this.ToString()+"】老子出生了 不希望我兒子是跟屁蟲,別我說啥他說啥。 ") ; } virtual public void say() {Console.WriteLine("老子說話了") ; } } public sealed class sonclass : baseClass{public sonclass(){} override public void say() {Console.WriteLine("兒子說話了") ; }}public sealed class son2class : baseClass{public son2class(){} override public void say() {Console.WriteLine("二兒子說話了") ; }}}
把上邊代碼複製到cs檔案中,運行結果如下 :
---------- run ----------=============== 運行C#程式 Write By cicnor===============my name am【programe+baseClass】老子出生了 不希望我兒子是跟屁蟲,別我說啥他說啥。 老子說話了my name am【programe+sonclass】老子出生了 不希望我兒子是跟屁蟲,別我說啥他說啥。 兒子說話了my name am【programe+son2class】老子出生了 不希望我兒子是跟屁蟲,別我說啥他說啥。 二兒子說話了兒子說話了二兒子說話了上邊是學習,下邊是多態實際例子,以及應用情境老子說話了兒子說話了二兒子說話了=============== 程式結束 Copy cicnor 2001===============Output completed (0 sec consumed) - Normal Termination