抽象方法与虚方法的区别
一、抽象方法:只在抽象类中定义,方法修饰符不能使用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("张三");}}
抽象方法与虚方法的区别相关推荐
- 抽象方法和虚方法的区别 [C#]
1.(abstract)抽象方法和(virtualt)虚方法的区别在于:虚方法有一个实现部分可以被子类继承,从而使子类获得和基类相同的方法,另外也为派生类提供了覆盖该方法的选项.相反,抽象方法没有提供 ...
- C#中抽象方法和虚方法的区别
前言:在前面很详细的讲解过抽象方法和虚方法,下来我们来探探究竟,它俩到底区别在哪里? 直通车: C#抽象方法.C#虚方法 目录: 一.两者的区别 二.两者使用场景 一.两者的区别 区别类型 抽象方法 ...
- unity理解抽象方法和虚方法
Abstract抽象方法和Virtual虚方法的区别 # 一.抽象方法:只在抽象类中定义,方法修饰符不能使用private,virtual,static. 总结:(1)抽象方法只能声明在抽象类中,使用 ...
- 抽象方法vs虚方法 c# 1613719040
抽象方法vs虚方法 c# 1613719040
- java虚方法和抽象方法_虚方法和抽象方法--基础回顾
抽象方法是只有定义.没有实际方法体的函数,它只能在抽象函数中出现,并且在子类中必须重写:虚方法则有自己的函数体,已经提供了函数实现,但是允许在子类中重写或覆盖. 重写的子类虚函数就是被覆盖了. 抽象方 ...
- java 抽象方法 虚方法的区别_声明抽象类(纯虚方法)会大幅增加二进制大小
以下是故事:我正在使用AC6 Toolpack为Linux中的ARM Cortex-M0处理器开发C软件 . 在我使用Keil(在windows中)(拥有自己的工具链)之前,我已经迁移到GNU-too ...
- 抽象方法和普通方法的区别
抽象类和抽象方法的关系:类中有抽象方法,这个类是不完整的,就需要定义成抽象类抽象类可以没有抽象方法,但有抽象方法的类一定是抽象类.抽象类和普通类的区别?抽象类可以定义抽象方法,普通类不可以.抽象类不能 ...
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
1.C#类和接口的区别 接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于: 抽象类是一个不完全的类,类 ...
- C#~虚方法,虚方法和抽象方法的区别
虚方法 特点: <1>虚方法必须使用virtual修饰 <2>虚方法同抽象方法(adstract)一样使用override关键字重写 <3>虚方法在子类中可以实现, ...
最新文章
- 双机热备+Win2003下集群案例
- (chap2 TCP/IP基础知识) TCP/IP分层模型的通信流程
- REM重复制造的冲销
- numpy.ndarray.reshape()torch.Tensor.reshape()与numpy.ndarray.view()torch.Tensor.view()的区别(view_as())
- 几种排序与最大K问题
- 第一学期《计算机网络》作业一_新学期学习计划合集5篇-其他范文
- c语言存储结构的实现,(C语言)栈的链式存储结构的实现
- java Runtime类
- mysql 的各种 join
- 删除web项目服务器,删除 Tomcat-webapps 目录自带项目【测试可行】
- windows10 计算机打不开怎么办,win10计算器打不开怎么解决|win10打开计算器的方法...
- RHEL7.3 已经GA了.
- 一个“点赞”功能的实现代码
- 【学习笔记】H5性能测试
- Oracle Database 数据库
- 等级保护与解读《网络安全法》
- win10无线网卡驱动怎么安装【系统天地】
- 通信原理——CDMA
- 【机器学习|数学基础】Mathematics for Machine Learning系列之矩阵理论(17):函数矩阵的微分和积分
- 旧上海黑社会老大杜月笙的经典语录,有些道理
热门文章
- 怎么用python画饼状图_如何使用python的pygal模块画饼状图
- Windows认证机制之Kerberos协议
- SQL Server 附加数据库
- less is better than more?
- 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON11 IPCORE之PLL详细教程
- String 在Java中的用法详解
- “晕乎乎的概念”:阿里云函数计算的“应用”又是个啥
- RSS收藏 设计师必看的苹果设计历代启示录
- java中如何将office文件转成pdf或者图片(亲测有效)
- 使用 Three.js 实现跳一跳游戏