wbfans

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

虚方法(virtual)
virtual关键字用地修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。
virtual表示此方法是一个虚方法,override表示要覆盖主线类的虚方法,对方法进行重写。
他们经常一起配合使用,这样就形成了多态。
多态(Polymorphism)
多态是指两个或多个属于不同类的对象,对同一个消息做出不同响应的能力。
多态概念的举例
●外科医生 cut
●发型师 cut
●演员  cut
当外科医生接收到cut指令时,外科医生会对病人进行手术
当发型师收到cut指令时,发型师会对顾客修剪头发
当演员收到cut指令时,演员会停止表演。

这个就是多态,对同一事件发出不同响应的能力。
使用举例

using System;
class Employee
{
	protected string _name;
	public Employee(){}
	public Employee(string name)
	{
		_name=name;
	}
	public virtual void StartWork()//rivtual常与overrider一起使用
	{
		Console.Write(_name+"开始工作");
	}
}
class Manager:Employee
{
	public Manager(string name):base(name){}
	//此构造函数调用了基类的构造函数,把string name的name传递到base(name)的构造函数里面
	//从而,Manager类里的构造函数会执行Employee中的构造函数
	public override void StartWork()
	{
		Console.WriteLine("给员工下达任务");
	}
	
}
class Secretary:Employee
{
	public Secretary(string name):base(name){}
	public override void StartWork()
	{
		Console.WriteLine("协助经理");
	}
}
class Test
{
	static void Main()
	{
		Employee[] emp=new Employee[3];
		emp[0]=new Manager("tom");
		emp[1]=new Secretary("lilly");
		emp[2]=new Secretary("mary");
		Console.WriteLine("we工作开始!");
		foreach(Employee e in emp)
		{
			e.StartWork();
		}
	}
}

此代码功能用多态实现有很多好处,例如这样会非常便于维护。我们程序里有员工、经理、秘书,如果再添加
一个成员业务员则只需新增一个关于业务员的类,此类继承至员工类,相关的工作事件可以用override重
载方法实现。

posted on 2011-08-14 17:52  wbfans  阅读(278)  评论(0编辑  收藏  举报