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


posted @ 2011-12-31 00:32  sdgxboy  阅读(169)  评论(0编辑  收藏  举报