压倒一切(overriding)和c中的过载#(overloading in c#)的区别

C中重写和重载之间的关键区别在于,重写方法调用对其定义的绑定发生在运行时,而重载的方法调用绑定到其定义发生在编译时。...

关键的区别–在c中重写与重载#

C中重写和重载之间的关键区别在于,重写方法调用对其定义的绑定发生在运行时,而重载的方法调用绑定到其定义发生在编译时。

C是微软开发的一种通用编程语言。C的主要优点是它支持面向对象编程(OOP)。OOP的一个支柱是多态性。它使一个对象具有多种行为。多态性有两种类型,称为重写和重载。本文讨论了C中方法重写和重载之间的区别。

目录

1. 概述和主要区别
2. 在C中重写是什么#
3. 什么是C语言中的重载#
4. C中重写和重载的相似性#
5. 并排比较-以表格形式在C中重写与重载
6.摘要

什么是在c中重写#(overriding in c#)?

在OOP中还有一个重要的概念是继承。它使用已经存在的类的属性和方法。它提高了代码的可重用性。已经存在的类是基类,新类称为派生类。在重写多态性时,应该有一个基类和一个派生类。重写的方法调用与定义的绑定发生在运行时。一个例子如下。

压倒一切(overriding)和c中的过载#(overloading in c#)的区别

图01:C#带重写的程序

根据上面的程序,类形状是基类,它包含显示方法。类Rectangle和Triangle是派生类。这些派生类在它们自己的实现中也有相同的方法显示。

首先,创建引用变量obj。它指向形状对象。因此,Shape类的display方法将被执行。然后,引用变量指向矩形对象。因此,将执行Rectangle类的display方法。最后,参考变量指向三角形对象。因此,将执行Triangle类的显示方法。基类显示方法被派生类的显示方法重写。

要运行的方法在运行时决定。Shape类是用“virtual”关键字编写的。矩形和三角形类是用“override”关键字编写的。如果不使用这些关键字,输出将全部打印Shape类的显示方法的内容。

什么是c中的过载#(overloading in c#)?

在重载中,多个方法具有相同的名称,但具有不同的参数。参数可以是不同类型的。这些方法也可以有不同数量的参数。方法重载发生在同一个类中。重载方法与定义的绑定发生在编译时。参考以下C程序。

压倒一切(overriding)和c中的过载#(overloading in c#)的区别

图02:C程序过载

根据上面的程序,类A有两个同名的方法sum。它们有不同类型的参数。在主程序中,创建了一个对象。sum(2,3)将使用整数调用sum方法。sum(5.1,7.94)将使用双精度值调用sum方法。两个方法具有相同的名称和相同数量的参数。但参数类型不同。相应地调用所需的方法。如果方法名和参数类型相同但参数数目不同,也可能发生重载。

什么是c语言中重写与重载的相似性#(the similarity between overriding and overloading in c#)?

  • C中的重写和重载都是多态性的类型。

压倒一切(overriding)和c中的过载#(overloading in c#)的区别

在C中重写vs重载#
重写是在派生类方法中为基类中已经存在的方法提供特定的实现。 C中的重载是用不同的实现创建具有相同名称的多个方法。
参数
在C#重写中,这些方法具有相同的名称、相同的参数类型和相同数量的参数。 在C#重载中,方法具有相同的名称,但参数数目不同,或者参数类型不同。
发生
在C#中,重写发生在基类和派生类中。 在C中,重载发生在同一个类中。
装订时间
重写的方法调用绑定到其定义发生在运行时。 重载方法调用对其定义的绑定发生在编译时。
同义词
重写称为运行时多态性、动态多态性或后期绑定。 重载称为编译时多态性、静态多态性或早期绑定。

总结 - 压倒一切(overriding) vs. c中的过载#(overloading in c#)

重写和重载是多态性的两种类型。在C中重写和重载的区别在于,被重写方法调用对其定义的绑定发生在运行时,而重载方法调用对其定义的绑定发生在编译时。

引用

  • 发表于 2020-10-18 23:50
  • 阅读 ( 218 )
  • 分类:IT

你可能感兴趣的文章

外面的(out)和参考c#(ref in c#)的区别

...于开发各种桌面、web和移动应用程序。函数或方法是编程中的一个概念。用于执行特定任务的语句组称为函数或方法。在C程序中,执行从main()开始。这是一个方法的例子。调用方法时,数据被传递到方法或从方法接收。调用...

  • 发布于 2020-10-18 20:42
  • 阅读 ( 236 )

领域(field)和c属性#(property in c#)的区别

关键区别——c语言中的字段与属性# C中field和property的关键区别在于,field是直接在类中声明的任何类型的变量,而property是一个成员,它提供了一种灵活的机制来读、写或计算私有字段的值。 C是微软开发的一种现代编程语言...

  • 发布于 2020-10-19 02:36
  • 阅读 ( 305 )

班(class)和结构(c)#(structure in c#)的区别

...形式的类与结构 6. 摘要 什么是c类#(class in c#)? 在OOP中,一切都被视为一个对象。在一个程序或软件中,有任意数量的对象。这些对象不是孤立存在的。每个对象都与其他对象交互。这种交流是通过动作来实现的。对象由属性和...

  • 发布于 2020-10-19 17:15
  • 阅读 ( 226 )

多态性(polymorphism)和oop中的继承(inheritance in oop)的区别

...时,称为重载。它也被称为静态绑定或编译时多态性。 压倒一切 另一种多态性是重写的。参考下面用Java编写的程序。 图02:覆盖 根据上面的程序,在类a中有一个方法display(),类B是从类a扩展而来的,因此类a中的所有方法都...

  • 发布于 2020-10-19 21:16
  • 阅读 ( 552 )

超载(overloading)和在java中重写(overriding in java)的区别

...表格形式在Java中重载与重写 6. 摘要 什么是java中的重载(overloading in java)? 重载是使用不同的实现创建同名的多个方法的能力。请参阅下面的Java代码。 图01:Java程序,解释使用不同数量的参数重载 根据上面的程序,类A包含两个...

  • 发布于 2020-10-19 21:20
  • 阅读 ( 366 )

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的区别

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的区别 泛型集合是一个类,它提供类型安全性,而不必从基集合类型派生并实现特定于类型的成员。非泛型集合是用于数据存储和检索的专用类,它提供对堆栈、队列、...

  • 发布于 2020-10-24 01:08
  • 阅读 ( 340 )

代表(delegates)和c中的事件#(events in c#)的区别

代表(delegates)和c中的事件#(events in c#)的区别 C是微软开发的一种编程语言。它支持结构化编程和面向对象编程。委托和事件用于C中的事件驱动编程。委托是指向方法的类型安全指针。在具有图形用户界面(GUI)的应用程序中...

  • 发布于 2020-10-24 02:21
  • 阅读 ( 210 )

超载(overloading)和覆盖(overriding)的区别

过载与覆盖 重载和重写都是大多数编程语言的特性。重载是一种特性,它允许在同一个类中创建几个具有相同名称的方法,但在函数的输入类型和输出类型方面彼此不同。方法重载通常与在函数调用中强制类型检查的静态编程...

  • 发布于 2021-06-23 10:08
  • 阅读 ( 179 )

抽象类(abstract class)和c中的接口#(interface in c#)的区别

抽象类看起来很像接口,但是这个概念对于OOP初学者来说有点混乱。从概念上讲,一个抽象类看起来就像一个接口,当然,没有任何实现,但是它们有各自的区别。虽然抽象类可以部分实现,也可以完全实现,但接口必须完全实...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 358 )

int解析(int parse)和在c中转换为32#(convert toint32 in c#)的区别

...息显示在屏幕上。 c中int parse和convert to int32的相似性# C中的int Parse和Convert to int32都可以将字符串转换为整数。 在这两种情况下,传递整数以外的数据类型都会导致格式异常。 此外,传递一个大的值将产生溢出异常。 int解析(in...

  • 发布于 2021-07-01 04:44
  • 阅读 ( 200 )
wbdxw1697
wbdxw1697

0 篇文章

相关推荐