c#多态实战
多态 就是说同一个对象,在不同的场景有不同的行为,也就是说执行不同的代码。 当然这个不同的场景是指类的指针指向的实际对象是什么,那么就调用这个实际对象的方法。
在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