比较相似术语之间的差异

之间的区别

首页 / 技术 / 它 / 编程 /虚拟与抽象的区别

虚拟与抽象的区别

2011年4月30日发布的罗山Ragel

虚拟的和抽象的

虚拟和抽象是大多数面向对象编程语言(如Java和c#)中使用的两个关键字。尽管在不同的语言中它的含义有细微的差别,Virtual和Abstract关键字都为它所附加的实体提供了部分实现的感觉。

摘要

通常,抽象类,也被称为抽象基类(ABC),不能被实例化(该类的实例不能被创建)。因此,抽象类只有在编程语言支持继承(从扩展类创建子类的能力)的情况下才有意义。抽象类通常表示部分实现或不实现的抽象概念或实体。因此,抽象类作为派生子类的父类,因此子类将共享父类的不完整特性,并且可以添加功能来完成它们。抽象类可以包含抽象方法。继承抽象类的子类可以实现这些(继承的)抽象方法。如果子类实现了所有这些抽象方法,那么它就是一个具体类。但如果没有,子类也会变成一个抽象类。这一切意味着,当程序员将一个类指定为抽象类时,她是在说这个类将是不完整的,它将有需要由继承的子类完成的元素。这是在两个程序员之间创建契约的好方法,它简化了软件开发中的任务。 The programmer, who writes code to inherit, needs to follow the method definitions exactly (but of course can have her own implementation). In Java and C#, Abstract classes and methods are declared using Abstract keyword.

虚拟

虚方法/函数提供了通过继承类(使用具有相同签名的函数)有选择地重写其行为的能力。虚函数的概念在下面的场景中很重要。假设一个类是由子类派生的,那么每当使用派生类的对象时,它可以引用基类的对象或派生类的对象。但是,如果基类方法被重写,方法调用行为可能是二义性的。因此,为了解决这种模糊性,使用了Virtual关键字。如果该方法被标记为Virtual,则调用派生类的函数(如果有的话),否则调用基类的函数。例如,在c++中,Virtual关键字就是为此目的而使用的。在c#中,Virtual关键字以类似的方式使用,但除此之外,关键字override应该用于修改所有被重写的方法。但是在Java中,没有显式的Virtual关键字。所有非静态方法都被认为是Virtual。 Virtual functions with no body are called Pure Virtual functions. In Java and C#, Abstract methods are in fact Pure Virtual.

虚拟与抽象的区别

尽管Abstract和Virtual是两个关键字/概念,它们为相关实体提供了不完整实现的含义,但它们确实有它们的区别。抽象方法(必须在抽象类内部定义)根本没有实现,而虚方法可能有实现。如果抽象方法被一个具体的类扩展,那么所有继承的抽象方法都必须被实现,而继承的虚方法可能被重写,也可能不被重写。

相关文章:

对象和类的区别 Java和JavaScript的区别 Java和C语言的区别 图与树的区别 程序设计中过程和函数的区别

了下:编程标记:美国广播公司,摘要,面向对象编程中的抽象和虚拟,抽象基类,抽象类,摘要关键字,抽象方法,抽象和虚拟,C,具体类,Java,纯虚函数,虚拟,虚拟的和抽象的,面向对象编程中的虚与抽象,虚函数,虚拟关键字,虚拟方法

关于作者:罗山Ragel

roshan G. Ragel博士,计算机科学与工程博士,IET(英国)和IEEE成员。他的研究兴趣包括嵌入式系统设计的微架构方面及其安全性和可靠性问题。

留下一个回复取消回复

你的电邮地址不会被公布。必填字段被标记*

请求的文章

特色的帖子

冠状病毒和感冒症状的区别

冠状病毒和感冒症状的区别

冠状病毒与SARS的区别

冠状病毒与SARS的区别

冠状病毒与流感的区别

冠状病毒与流感的区别

冠状病毒和Covid - 19的区别

冠状病毒和Covid - 19的区别

你可能会喜欢

神经与静脉的区别

神经与静脉的区别

Could Of和Could Have之间的区别

镇静剂和镇定剂的区别

镇静剂和镇定剂的区别

腺相关病毒载体和腺病毒载体有什么区别

腺相关病毒载体和腺病毒载体有什么区别

红藜麦和白藜麦的区别

红藜麦和白藜麦的区别

最新的文章

  • 土壤空气和大气空气有什么不同
  • 电炉和电磁炉有什么区别
  • 类固醇和抗生素有什么区别
  • 胃炎和胰腺炎有什么区别
  • 正常空气和轮胎中的氮气有什么区别
  • 痤疮和酒渣鼻有什么区别
  • 首页
  • 职位空缺
  • 关于
  • 请求的文章
  • 联系我们

版权©2010 - 2018之间的区别.保留所有权利。使用条款和隐私政策:法律.