c#多态实战

来源:互联网 发布:叶诗文里约奥运会 知乎 编辑:程序博客网 时间:2024/06/13 22:57

多态  就是说同一个对象,在不同的场景有不同的行为,也就是说执行不同的代码。 当然这个不同的场景是指类的指针指向的实际对象是什么,那么就调用这个实际对象的方法。

在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


原创粉丝点击