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