在C#中,使用关键字virtual定义虚方法,没有用virtual关键字定义的方法则被称为非虚方法。使用虚方法的具体格式如下:
注意
关键字virtual不能和static、abstrct或override修饰符同时使用。并且因为虚拟成员不能是私有的,所以virtual也不能和private同时使用。
如果在声明某方法中使用override修饰符,则称这个方法为重写方法。重写方法用相同的签名来重写所继承的虚方法。其中虚方法的声明用于引入新方法,而重写方法的声明则使从基类继承来的虚方法专用化。
注意
关键字override不能和static、abstrct或virtual修饰符同时使用。并且重写方法只能用于重写基类的虚方法。
非虚方法的实现是不变的,无论是在声明方法类的实例中,还是在派生子类的实例中,当调用这个非虚方法时,它的实现都是相同的。也就是说,派生子类不能改变基类中声明的非虚方法实现。
实例43:在继承类关系中使用方法
下面通过一个简单实例来说明非虚方法在继承类关系中的使用流程,本实例保存在“光盘:\daima\10”文件夹内,项目名为noxu。实例的功能是根据定义的方法输出对应处理结果,实现文件的主要代码如下:
(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所示。
图10-2 实例执行结果
从图10-2所示的执行结果可以看出,只要通过声明为class1的对象来引用方法F(),就总是会调用class1的F()。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。