一、抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static.

总结:(1)抽象方法只能声明在抽象类中,使用关键字abstract

(2)抽象类中的抽象方法必须被子类重写。

虚方法:使用virtual修饰的方法

注意事项:virtual修饰符不能与private、static、abstract、override修饰符同时使用。

override修饰符不能与new 、static、virtual修饰符同时使用,并且重写方法只能用于重写基类中的虚方法。

二、两者区别:

总结:抽象方法是只有方法名称,没有方法体(也就是没有方法具体实现),子类必须重写父类抽象方法;

虚函数是该方法有方法体,但是子类可以覆盖,也可不覆盖。

(1)虚方法有方法体,抽象方法没有方法体。抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化;

(2)抽象方法只能在抽象类中声明,虚方法不是;

(3)派生类必须重写抽象类中的抽象方法,虚方法则不必要。

代码区别:

 虚方法:

class Class1{//虚方法//virtual修饰符不能与private、static、abstract、override修饰符同时使用public virtual void Show(){// 虚函数是该方法有方法体Console.WriteLine("张三");}}class Class2 :Class1{//子类可以覆盖Class1类的虚方法Show(),也可不覆盖Class1类的虚方法Show()public override void Show(){ Console.WriteLine("张三");}}

抽象方法

abstract class Class1{//方法修饰符不能使用private,virtual,static.public abstract void Show();}    //Class2类继承Class1类class Class2 :Class1{//抽象类中的抽象方法必须被子类重写。除非子类也是抽象public override void Show(){ Console.WriteLine("张三");}}

抽象方法与虚方法的区别相关推荐

  1. 抽象方法和虚方法的区别 [C#]

    1.(abstract)抽象方法和(virtualt)虚方法的区别在于:虚方法有一个实现部分可以被子类继承,从而使子类获得和基类相同的方法,另外也为派生类提供了覆盖该方法的选项.相反,抽象方法没有提供 ...

  2. C#中抽象方法和虚方法的区别

    前言:在前面很详细的讲解过抽象方法和虚方法,下来我们来探探究竟,它俩到底区别在哪里? 直通车: C#抽象方法.C#虚方法 目录: 一.两者的区别 二.两者使用场景 一.两者的区别 区别类型 抽象方法 ...

  3. unity理解抽象方法和虚方法

    Abstract抽象方法和Virtual虚方法的区别 # 一.抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static. 总结:(1)抽象方法只能声明在抽象类中,使用 ...

  4. 抽象方法vs虚方法 c# 1613719040

    抽象方法vs虚方法 c# 1613719040

  5. java虚方法和抽象方法_虚方法和抽象方法--基础回顾

    抽象方法是只有定义.没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写:虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖. 重写的子类虚函数就是被覆盖了. 抽象方 ...

  6. java 抽象方法 虚方法的区别_声明抽象类(纯虚方法)会大幅增加二进制大小

    以下是故事:我正在使用AC6 Toolpack为Linux中的ARM Cortex-M0处理器开发C软件 . 在我使用Keil(在windows中)(拥有自己的工具链)之前,我已经迁移到GNU-too ...

  7. 抽象方法和普通方法的区别

    抽象类和抽象方法的关系:类中有抽象方法,这个类是不完整的,就需要定义成抽象类抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类.抽象类和普通类的区别?抽象类可以定义抽象方法,普通类不可以.抽象类不能 ...

  8. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别 接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于: 抽象类是一个不完全的类,类 ...

  9. C#~虚方法,虚方法和抽象方法的区别

    虚方法 特点: <1>虚方法必须使用virtual修饰 <2>虚方法同抽象方法(adstract)一样使用override关键字重写 <3>虚方法在子类中可以实现, ...

最新文章

  1. 双机热备+Win2003下集群案例
  2. (chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程
  3. REM重复制造的冲销
  4. numpy.ndarray.reshape()torch.Tensor.reshape()与numpy.ndarray.view()torch.Tensor.view()的区别(view_as())
  5. 几种排序与最大K问题
  6. 第一学期《计算机网络》作业一_新学期学习计划合集5篇-其他范文
  7. c语言存储结构的实现,(C语言)栈的链式存储结构的实现
  8. java Runtime类
  9. mysql 的各种 join
  10. 删除web项目服务器,删除 Tomcat-webapps 目录自带项目【测试可行】
  11. windows10 计算机打不开怎么办,win10计算器打不开怎么解决|win10打开计算器的方法...
  12. RHEL7.3 已经GA了.
  13. 一个“点赞”功能的实现代码
  14. 【学习笔记】H5性能测试
  15. Oracle Database 数据库
  16. 等级保护与解读《网络安全法》
  17. win10无线网卡驱动怎么安装【系统天地】
  18. 通信原理——CDMA
  19. 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(17):函数矩阵的微分和积分
  20. 旧上海黑社会老大杜月笙的经典语录,有些道理

热门文章

  1. 怎么用python画饼状图_如何使用python的pygal模块画饼状图
  2. Windows认证机制之Kerberos协议
  3. SQL Server 附加数据库
  4. less is better than more?
  5. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON11 IPCORE之PLL详细教程
  6. String 在Java中的用法详解
  7. “晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
  8. RSS收藏 设计师必看的苹果设计历代启示录
  9. java中如何将office文件转成pdf或者图片(亲测有效)
  10. 使用 Three.js 实现跳一跳游戏