C#的virtual & abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义。但是用法上差别很大。

a)     virtual修饰的方法必须有方法实现(哪怕只有一对大括号),abstract修饰的方法不能有实现。

b)    virtual可以被子类重写,abstract必须被子类重写

c)     如果类中的某一函数被abstact修饰,则类名也必须用abstact修饰

d)    Abstract修饰的类不能被创建实例。

e)     C#中如果准备在子类重写父类的方法,则该方法在父类中必须用virtual修饰,在子类中必须用overide修饰,避免了程序员在子类中不小心重写了父类父类方法。

注:用abstract修饰的类只能被继承不能够被实例化。

转载于:https://www.cnblogs.com/xingbinggong/archive/2011/07/05/2098454.html

C#中virtual与abstract的区别相关推荐

  1. 浅谈C#中virtual和abstract的区别

    virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义. 它们有一个共同点:如果用来修饰方法,前面必须添加public,要不然就会出现编译错误:虚拟方法或抽象方法是不能 ...

  2. C#virtual和abstract的区别

    虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化.如: //抽象方法 pu ...

  3. java中virtual关键字_浅谈virtual、abstract方法和静态方法、静态变量理解

    说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在 ...

  4. sealed、new、virtual、abstract与override 趣解

    1. sealed--"断子绝孙"密封类不能被继承.密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写.当应用于 方法或属性时,sealed修饰符必须始终与over ...

  5. C#中抽象类和接口的区别与应用场景

    一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...

  6. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  7. C++中overload,override,overwrite的区别?

    C++中overload,override,overwrite的区别? Overload(重载) Override(覆盖) Overwrite(重写) Overload(重载) 在C++程序中,可以将 ...

  8. Delphi之virtual,dynamic,abstract

    对象的方法能定义成静态(static).虚拟(virtual).动态(dynamic)或消息处理(message).请看下面  的例子: TFoo = class  procedure IAmASta ...

  9. java中Runnable和Callable的区别

    文章目录 运行机制 返回值的不同 Exception处理 java中Runnable和Callable的区别 在java的多线程开发中Runnable一直以来都是多线程的核心,而Callable是ja ...

  10. C#中new和override的区别

    using System; //C#中new和override的区别 namespace Text {//在C#中,override和new都会覆盖父类中的方法.那它们两者之前有什么区别呢?//ove ...

最新文章

  1. (转)关于数据库主键和外键(终于弄懂啦)
  2. linux下配置apache多站点访问-小案例
  3. Javascript中的Document对象详解
  4. 什么是单页面应用程序
  5. 特征向量的辨析(数学,机器学习)
  6. Java多线程之Synchronized详解
  7. 计算机桌面如何分区,学会电脑桌面整理分区,提高工作效率
  8. element-ui表单中的文本域 调整高度
  9. Windows 95 被做成了一款 app,我们在 MacBook 上体验了它
  10. 迁移到MySQL的语法转换工具初步设计
  11. 金蝶K3系统BOM数据批量审核/使用语句
  12. POJ 3345 Bribing FIPA(树形dp+背包)
  13. 自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图
  14. 苹果雪豹操作系统正式版_苹果发布WatchOS 6.1.2第三个测试版本,修复Bug、提升设备稳定性...
  15. 找出数组中出现次数最多的数字和出现次数
  16. Myeclipse运行servlet文件页面报错404
  17. AutoJs学习-传感器图像
  18. 各国网络标识码表(MCC MNC表)
  19. 路由与交换 实验一 路由器基本配置
  20. Linux_clustalW安装及使用(部分)

热门文章

  1. 这样的Softmax你真的不了解!
  2. 我的小导师-天津大学张梅山老师要招NLP方向的研究生啦!
  3. 2019.2.4时GitHub超过15个粉丝就可以领取3000元啦!
  4. 时序算法—AR、MA、ARMA和ARIMA模型以及Auto ARIMA
  5. [论文笔记]RoBERTa: A Robustly Optimized BERT Pretraining Approach
  6. 数据分析师如何正确地提意见?
  7. 书单 | 职场办公类私藏好书,轻松Get职场必备技能
  8. CIA网攻中国11年,内网防护刻不容缓!
  9. 构建运营级IPv6网络
  10. ARM处理器系统初始化编程注意事项