C#虚拟方法
来源:互联网 发布:阿里巴巴标题优化工具 编辑:程序博客网 时间:2024/04/30 00:14
当类中的方法声明前加上了virtual修饰符,我们称之为C#虚拟方法 ,反之为非虚。使用了virtual修饰符后,不允许再有static、abstract或override修饰符。对于非虚的方法,无论被其所在类的实例调用,还是被这个类的派生类的实例调用,方法的执行方式不变。而对于虚方法,它的执行方式可以被派生类改变,这种改变是通过方法的重载来实现的。
下面的例子说明了C#虚拟方法与非虚方法的区别。
例子:
- using System;
- class A
- {
- public void F(){Console.WriteLine("A.F");}
- public virtual void G(){Console.WriteLine("A.G");}
- }
- class B:A
- {
- new public void F(){Console.WriteLine("B.F");}
- public override void G(){Console.WriteLine("B.G");}
- }
- class Test
- {
- static void Main()
- {
- B b=new B();
- A a=b;
- a.F();
- b.F();
- a.G();
- b.G();
- }
- }
例子中,A类提供了两个方法:非虚的F和C#虚拟方法 G.类B则提供了一个新的非虚的方法F,从而覆盖了继承的F;类B同时还重载了继承的方法G.那么输出应该是:
A.F
B.F
B.G
B.G
注意到本例中,方法a.G()实际调用了B.G,而不是A.G.这是因为编译时值为A,但运行时值为B,所以B完成了对方法的实际调用。
- 简介C#虚拟方法
- C#虚拟方法
- C# 虚拟方法
- C#多态性-虚拟方法实现多态
- C#多态性-虚拟方法实现多态
- C#抽象方法与虚拟方法的区别
- c#中的虚拟方法-virtual(转自MSDN)
- 虚拟方法
- C#类、接口、虚方法和抽象方法-虚拟方法与抽象方法之区别
- C#首席架构师:版本控制、虚拟化和覆盖,C#为什么是非虚方法
- C#实现虚拟桌面
- c#虚拟打印机
- C#添加虚拟键盘
- c#虚拟路径
- C++、Java和C#语言在处理“虚拟私有方法”上的差异
- C++、Java和C#语言在处理“虚拟私有方法”上的差异
- asp.net C#网站项目 获取物理路径、虚拟路径的方法
- C++、Java和C#语言在处理“虚拟私有方法”上的差异
- jax-ws wsimport 命令详解
- linux下命令边用边学
- CXF WebService Notification(WS-N)使用简介
- 5版本管理工具svn
- hdu1058(找第n个数,其因子只含2,3,5,7)
- C#虚拟方法
- install fme 2011 crack
- Memcached Session Manager 1.5.1 发布
- Android中的多线程的应用
- java内部类相关
- Matlab中plot函数解析
- 写给互联网创业者:创业,贵在坚持!
- 6版本控制工具svn
- Foundation框架-字符串对象的操作(不可变字符串NSString和可变字符串NSMutableString)