虚方法与重写方法的使用

C#中的多态性在实现时主要是通过在子类(派生类)中重写基类的虚方法或函数成员来实现的,那么这里就遇到两个概念,一个是虚方法,另一个是重写方法,而这两个方法也是多态中最重要的两个概念,下面分别对它们进行讲解。

1.虚方法

虚方法就是允许被其子类重新定义的方法,在声明时,需要使用virtual修饰符。

注意

1virtual修饰符不能与staticabstract或者override修饰符同时使用;

2)由于虚方法不能是私有的,所以,virtual修饰符不能与private修饰符同时使用。

  使用virtual修饰符声明一个虚方法,用来计算两个数的和,代码如下:

public virtual int Add(int x, int y)                          //定义一个虚方法

{

    return x + y;                                                          //返回两个数的和

}

2.重写方法

如果一个方法声明中含有override修饰符,则称该方法为重写方法,它主要用来使用相同的签名重写继承的虚方法。虚方法主要用来引入新方法,而重写方法则使从基类继承而来的虚方法专用化(提供虚方法的具体实现)。

注意

1override修饰符不能与newstatic或者virtual修饰符同时使用,另外,重写方法只能用于重写基类中的虚方法,不能用来单独声明方法;

2)重载和重写是不相同的,重载是指编写一个与已有方法同名,但参数列表不同的方法,而重写是指在派生类中重写基类的虚方法。

  创建一个控制台应用程序,首先定义一个基类,并在其中定义一个虚方法,用来计算两个数的和;然后使Program类继承于BaseClass类,并在该类中重写基类中的虚方法,使其实现计算3个数的和;最后在Main方法中,使用派生类对象实例化基类的一个对象,并使用该基类对象调用派生类中的方法,实现计算3个数的和。代码如下:

class BaseClass                                                                       //定义一个基类

{

    public virtual int Add(int x, int y)                                      //定义一个虚方法

    {

        return x + y;                                                             //返回两个数的和

    }

}

class Program:BaseClass                                                        //定义一个派生类,继承于BaseClass

{

    static int z = 0;                                                               //定义一个静态变量,用来作为第3个被加数

    public override int Add(int x, int y)                                 //重写基类中的虚方法

    {

        return base.Add(x, y) + z;                                         //计算3个数的和

    }

    static void Main (string[] args)

    {

        z = 698;                                                                   //为静态变量赋值

        BaseClass baseclass = new Program();                       //使用派生类对象实例化基类对象

        Console.WriteLine(baseclass.Add(98, 368));            //调用派生类中重写之后的方法

        Console.ReadLine();

    }

}

说明

Main方法中使用基类对象调用的Add方法是在派生中重写之后的方法,这主要是因为虚方法的实现由派生类中的重写方法进行了取代。

技巧

在派生类中重写基类中的虚方法时,可以使用base关键字调用基类中的虚方法。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小禾斗斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值