在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别。二者都牵涉到在派生类中与override的配合使用。

一、Virtual方法(虚方法)

virtual 关键字用于在基类中修饰方法。virtual的使用会有两种情况:

情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法。那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法。

情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法。那么在对派生类实例的调用中,该虚方法使用的是派生重写的方法。

二、Abstract方法(抽象方法)

abstract关键字只能用在抽象类中修饰方法,并且没有具体的实现。抽象方法的实现必须在派生类中使用override关键字来实现。

接口和抽象类:

最本质的区别:抽象类是一个不完全的类,是对对象的抽象,而接口是一种行为规范。

最新文章

  1. iOS Run_time
  2. 无法启动此程序,因为计算机中丢失AdbWinApi.dll。尝试重新安装该程序以解决此问题
  3. xcode7 打开工程错误 This Document requires xcode8.0 or later.
  4. GL_GL系列 - 多币种管理分析(案例)
  5. Linux_系统信息
  6. 高级I/O之非阻塞I/O
  7. cocos2dx 初探 - VS2012 HELLOWORLD
  8. TCP/IP 要点备忘
  9. 敏捷开发(七)- SCRUM评估会议
  10. java使用字节流和字符流实现文件复制
  11. typeof、constructor和instance
  12. 全国交通咨询系统 by C++ on Linux
  13. python3中time模块的用法及说明
  14. OO面向对象课程作业1-3总结
  15. Java服务使用Redis实现分布式全局唯一标识
  16. AngularJS学习之旅—AngularJS 过滤器(七)
  17. Ajax如何实现从前端不刷新页面就可以到后端取到数据
  18. 最棒的 JavaScript 学习指南(2018版)
  19. CSS-三角形及其原理
  20. 字符编码_Windows资料

热门文章

  1. JavaScript常用技巧总结(持续添加中...)
  2. DEV柱状图----傻瓜版
  3. 极其简单的搭建eclipse的android开发环境
  4. Android 异步Http框架简介和实现原理
  5. 【Android】用HandlerThread模拟AsyncTask功能(ThreadTask)
  6. Android开发拾遗(一)用Wi-Fi连接adb
  7. Play Framework 完整实现一个APP(二)
  8. java环境变量 windows centos 安装jdk
  9. 用Phaser实现Flappy Bird 游戏
  10. FATAL ERROR: Could not find ./bin/my_print_defaults的解决办法