虚方法与多态

虚方法(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重
载方法实现。

你可能感兴趣的:(多态)