[C#基础知识]关于虚函数Virtual 及 抽象函数Abstract
来源:互联网 发布:鲨鱼网络加速器 编辑:程序博客网 时间:2024/05/21 00:15
Virtual
虚函数是多态的前提和保证
被标注为virtual的函数可以被继承类重写(override),并且可以在运行时动态调用相应的方法(多态)。
没有标注为virtual的非虚方法,在继承类中虽然不能通过override重写方法,但是也可以声明一个同名方法的,不过不具备多态的性质!
有两个类如下:
public class SuperClass { public void Display()//not virtual { Console.WriteLine("I'm super"); } public virtual void Vdisplay() { Console.WriteLine("I'm superVVV!!!"); } } public class LowerClass : SuperClass { public void Display()//new public void Display();和父类中的方法同名,却不具备多态的性质 { Console.WriteLine("i'm lower"); } public override void Vdisplay()//重写了父类中的方法 { Console.WriteLine("I'm lowerVVV"); } }
主函数及输出如下:
static void Main(string[] args) { //这里一切正常 LowerClass l = new LowerClass(); l.Display(); //输出:I'm lower l.Vdisplay();//输出:I'm lowerVVV //问题在下面: SuperClass s = new LowerClass(); s.Display(); //输出:I'm super (!!!注意:此处并没有多态的影子,而是直接调用了父类SuperClass的Display()方法) s.Vdisplay();//输出:I'm lowerVVV }
Abstract
abstract抽象方法则更像是一个接口(Interface)方法
被标注为abstract的方法不能有具体的实现!
而且如果有方法被标注为abstract, 则这个类需要被标注为abstract
具体关于virtual 和 abstract的区别可以参看:http://www.cnblogs.com/MayGarden/archive/2010/04/04/1704279.html
- [C#基础知识]关于虚函数Virtual 及 抽象函数Abstract
- abstract抽象与virtual虚函数
- C#中修饰符用法“virtual(虚拟函数)、override(函数复写)、static(静态函数)、abstract(抽象函数)、sealed(密封函数)”
- 区分C#中的Abstract函数和Virtual函数
- 区分C#中的Abstract函数和Virtual函数
- Return to the Basic - 纯虚函数(pure virtual)和抽象类(abstract class)
- C++ - 纯虚函数(pure virtual) 和 抽象基类(abstract base class)
- 抽象类 虚函数及重写 virtual override new
- C#虚函数virtual
- 关于virtual虚函数
- C# 委托 && Virtual, abstract, override && 静态构造函数
- 关于基类中函数修饰符abstract和virtual的使用
- C#虚函数virtual详解
- C#虚函数virtual详解
- C#虚函数virtual详解
- C#虚函数virtual详解
- C#虚函数virtual详解
- C#虚函数virtual详解
- 桥式整流电路计算
- Chapter02-VC 中与字符串相关的宏 _T、TEXT,_TEXT、L 的作用
- B 计划
- Android源码开发(1)---- 如何在Ubuntu 11.10中搭建Android编译开发环境
- DWR3.0 dwr 返回值(数组,集合,Map)
- [C#基础知识]关于虚函数Virtual 及 抽象函数Abstract
- [转]Half Life 2 Source 引擎介绍
- 黑马程序员-Jquery选择器图解
- 10年的程序员生涯
- VC++窗口子类化
- kindeditor基本验证
- samsung i9100 手机共享电脑网络
- 关于java语言中的取整运算
- 用C写一个简单病毒