首页 理论教育 C#编程新手手册:虚方法重写实践

C#编程新手手册:虚方法重写实践

时间:2023-10-22 理论教育 版权反馈
【摘要】:在C#中,使用关键字virtual定义虚方法,没有用virtual关键字定义的方法则被称为非虚方法。并且因为虚拟成员不能是私有的,所以virtual也不能和private同时使用。如果在声明某方法中使用override修饰符,则称这个方法为重写方法。其中虚方法的声明用于引入新方法,而重写方法的声明则使从基类继承来的虚方法专用化。非虚方法的实现是不变的,无论是在声明方法类的实例中,还是在派生子类的实例中,当调用这个非虚方法时,它的实现都是相同的。

C#编程新手手册:虚方法重写实践

在C#中,使用关键字virtual定义虚方法,没有用virtual关键字定义的方法则被称为非虚方法。使用虚方法的具体格式如下:

978-7-111-36370-5-Part02-308.jpg

注意

关键字virtual不能和static、abstrct或override修饰符同时使用。并且因为虚拟成员不能是私有的,所以virtual也不能和private同时使用。

如果在声明某方法中使用override修饰符,则称这个方法为重写方法。重写方法用相同的签名来重写所继承的虚方法。其中虚方法的声明用于引入新方法,而重写方法的声明则使从基类继承来的虚方法专用化。

注意

关键字override不能和static、abstrct或virtual修饰符同时使用。并且重写方法只能用于重写基类的虚方法。

非虚方法的实现是不变的,无论是在声明方法类的实例中,还是在派生子类的实例中,当调用这个非虚方法时,它的实现都是相同的。也就是说,派生子类不能改变基类中声明的非虚方法实现。

实例43:在继承类关系中使用方法

下面通过一个简单实例来说明非虚方法在继承类关系中的使用流程,本实例保存在“光盘:\daima\10”文件夹内,项目名为noxu。实例的功能是根据定义的方法输出对应处理结果,实现文件的主要代码如下:

978-7-111-36370-5-Part02-309.jpg

978-7-111-36370-5-Part02-310.jpg(www.xing528.com)

上述实例代码的设计流程如下。

1)定义基类class1,并在其中声明方法F()。

2)定义class1的派生子类class2,并使用new关键字将方法F()隐藏。

3)定义类Test。

4)分别创建基类class1的对象a,子类class2的对象b。

5)设置对象c编译时的类型为class1,运行时的类型为class2。

6)分别通过对象a、b和c调用方法F()。

执行后将分别调用对应的处理方法并输出对应的文本,如图10-2所示。

978-7-111-36370-5-Part02-311.jpg

图10-2 实例执行结果

从图10-2所示的执行结果可以看出,只要通过声明为class1的对象来引用方法F(),就总是会调用class1的F()。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈