c#面向对象系列2(多态性)

c#多态性的定义:同一操作作用于不同的类的实例,不同的类将进行不同的理解,最后产生不同的执行结果。c#支持两种类型的多态性:

《1》编译时的的多态性。编译时的多态性是通过重载来实现的。对于非虚的成员来说,系统在编译时,根据传递的参数,返回的类型等信息决定实现何种操作。

《2》运行时的多态性。运行时的多态性就是指直到系统运行时,才根据实际情况决定实现何种操作,c#中,运行时的多态性通过虚成员实现。

编译时的多态性为我们提供了运行速度的快的特点,而运行时的多态性则带来了高度灵活的特点。

虚方法

当类中的方法声明前加上virtual修饰符时,我们称之为虚方法,反之为非虚方法。

class  MyBaseClass

{

     public   virtual   string     VirtualMethod()

        {

                return  "这个方法是虚方法";

        }

}

重写虚函数

普通方法的重载指的是,类中的两个以上的方法(包括隐藏的继承而来的方法),取的名字相同,只要使用的是参数或者参数的个数不同,编译器便知道在何种的情况下调用何种方法,而对于基类中的方法重载的另一种特殊形式,在派生类中重新定义此虚函数时,要求的是方法名称,返回值类型,参数类型,参数表中的参数个数。类型顺序都必须与基类中虚方法完全一致,在派生类中对虚函数方法的重载加上override关键字,而且不能有new ,static,virtual等修饰符

class  MyDerivedClass :MyBaseClass

{

    public   override    string    VirtualMethod()

        {

                              return "这个方法是override方法";

        } }

原文地址:https://www.cnblogs.com/zhijianliutang/p/2250664.html