比较类似术语之间的差异

之间的区别

家 / 技术 / 它 / 编程 /覆盖和超载之间的区别

覆盖和超载之间的区别

2011年7月25日发表Indika

覆盖与超载

方法覆盖和方法过载是某些编程语言中发现的两个概念/技术/功能。这两个概念都使程序员可以为具有相同名称的方法提供不同的实现。方法覆盖允许程序员在子类中为其超级类中定义的方法提供替代实现。方法超载使程序员可以为具有相同名称的多个方法(在同一类中)提供不同的实现。

什么是覆盖?

如上所述,类可以在面向对象的编程语言中扩展超级类或父类。儿童类可以具有自己的方法,也可以选择自己对其父类中已经定义的方法(或其大父母之一)具有自己的实现。因此,当后者发生时,它称为方法覆盖。换句话说,如果儿童类提供了与已在其父类中已经定义的方法相同的签名和返回类型的方法实现。因此,如果类中有一个覆盖方法,则运行时系统将必须决定使用哪种方法实现。通过查看用于调用它的对象的确切类型来解决此问题。如果使用父类的对象调用被覆盖方法,则使用父类中的实现。同样,如果它是使用的子类的对象,则使用子类的实现。Java,Eifell,C ++和Python等现代编程语言允许覆盖方法。

什么是过载?

方法过载是某些编程语言提供的功能,以创建具有相同名称的多种方法,但输入类型不同。在Java,C#,C ++和VB.NET等现代编程语言中,此功能可用。您可以通过创建另一种方法与相同名称,但具有不同的方法签名或不同的返回类型(或两者)来超载。例如,如果您在同一类内有Method1(Type1 T1)和Method1(Type2 T2),则它们被超载。然后,系统将必须决定在调用哪一个时执行哪一个。通过查看将参数的类型传递给该方法,可以进行这种差异。如果该参数是类型1的,则将第一个实现称为type2,则称为第二个实现。

覆盖和超载有什么区别?

虽然,方法覆盖和方法过载用于提供具有不同实现的方法,但这两个概念/技术之间存在关键差异。首先,方法覆盖的主题始终留在不同的类中,而方法超载的主题则保持在同一类中。这意味着只有在允许继承的对象的编程语言中进行重叠,而超载也可以以非对象为导向的语言可用。换句话说,您覆盖了超级类中的一种方法,但是在自己的类中超载了一种方法。

另一个区别是,压倒方法具有相同的方法名称,方法签名和返回类型,但是超载方法在签名或返回类型上必须有所不同(名称应相同)。为了区分两种覆盖方法,用于调用使用的方法ID的确切类型的对象类型,而为了区分两个过载方法,则使用了参数的类型。另一个关键区别是,在编译时解决了过载,而在运行时则解决了覆盖。

相关文章:

结构化编程和面向对象的编程之间的差异 AOP和OOP之间的差异 面向对象的编程和程序编程之间的差异 抽象类和混凝土类之间的区别 异常和错误之间的差异

提交以下:编程标记为:C,,,,编译时间,,,,艾弗尔,,,,遗产,,,,爪哇,,,,方法名称,,,,方法过载,,,,方法被覆盖,,,,方法覆盖,,,,方法签名,,,,面向对象的编程,,,,超载,,,,超载方法,,,,覆盖方法,,,,覆盖,,,,Python,,,,运行,,,,运行时系统,,,,vb.net

关于作者:Indika

Indika,BSC.ENG,MSECE计算机工程博士。计算机科学是一名助理教授,在生物信息学,计算生物学和生物医学自然语言处理方面具有研究兴趣。

发表评论取消回复

您的电子邮件地址不会被公开。必需的地方已做标记*

请求文章

精选文章

冠状病毒和冷症状之间的差异

冠状病毒和冷症状之间的差异

冠状病毒和SARS之间的差异

冠状病毒和SARS之间的差异

冠状病毒和流感的差异

冠状病毒和流感的差异

冠状病毒和covid 19之间的差异

冠状病毒和covid 19之间的差异

你可能喜欢

DNA和RNA核苷酸之间的差异

DNA和RNA核苷酸之间的差异

梦想与噩梦之间的区别

有效和情感之间的差异

有效和情感之间的差异

兰索拉唑和奥美拉唑之间的差异

怀旧和回忆之间的差异

怀旧和回忆之间的差异

最新的帖子

  • 感应炊具和普通炊具有什么区别
  • 白癜风和牛皮癣有什么区别
  • 取消和皮质骨有什么区别
  • 电力和感应灶具有什么区别
  • 预防和治疗之间有什么区别
  • DSM IV和DSM V自闭症有什么区别
  • 家
  • 空缺
  • 关于
  • 请求文章
  • 联系我们

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