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