一、多态的概念
多态性是指不同对象收到相同消息时会产生不同动作。在C#中,多态性通过派生类覆写基类中的虚函数型方法来实现。基类的方法要加上关键字 virtual 后变成虚方法,才可以被重写,从而实现面向对象最重要的特征——多态性,即基类可以使用派生类的方法。
二、C#支持两种多态性
(一)编译时的多态性
通过方法重载和操作符重载来实现。
(二)运行时的多态性
系统直到运行时才根据实际情况决定采用何种操作。
三、案例
class BaseClass
{
public virtual void Method()
{
Console.WriteLine("Base-Method");
}
}
class DerivedClass : BaseClass
{
public override void Method()
{
Console.WriteLine("Derived-Method");
}
}
class Program
{
static void Main(string[] args)
{
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass();
//bcdc类型为BaseClass,且其值的类型为DerivedClass。
BaseClass bcdc = new DerivedClass();
//调用基类中的虚方法
bc.Method(); //Base-Method
//调用派生类中重写后的方法
dc.Method(); //Derived-Method
//此处实现多态,通过基类变量调用派生类中的方法
bcdc.Method(); //Derived-Method
//此处实现多态,将派生类型的变量赋值给基本类型的变量
bc = dc;
bc.Method(); //Derived-Method
Console.ReadLine();
}
}