什么是方法重载?(method overloading?)

方法重载是大多数面向对象编程语言中的一个特性,其中两个或多个方法共享相同的名称,但具有不同的参数。具体而言,参数的数量、数据类型和/或顺序是不同的。编译代码时,将根据调用方式自动选择正确的方法。方法在某些编程语言中也称为函数,因此方法重载有时称为函数重载。...

方法重载是大多数面向对象编程语言中的一个特性,其中两个或多个方法共享相同的名称,但具有不同的参数。具体而言,参数的数量、数据类型和/或顺序是不同的。编译代码时,将根据调用方式自动选择正确的方法。方法在某些编程语言中也称为函数,因此方法重载有时称为函数重载。

In object-oriented computer programming, when two or more methods share the same name but have different parameters it is called method overloading.

方法重载的一个简单示例是计算正方形面积的方法。它可能被定义为getArea(正方形)。通过添加getArea(圆c)方法,可以重载此方法以额外计算圆的面积。

方法重载的主要要求是方法共享相同的名称。它们的方法签名(方法名称、参数数量和参数数据类型)应该是唯一的。通过这种方式,编译器可以确定要执行的方法。

构造函数(用于实例化对象的方法)经常被重载。这样做是为了用非默认值初始化对象。例如,具有两个字段(姓名和出生日期,或dob)的employee对象可能具有以下重载构造函数:employee()、employee(姓名)和employee(姓名,dob)。第一个构造函数使用空名称和dob字段创建employee对象。第二个设置name字段,但dob字段为空,第三个定义name和dob字段。

方法重载通常是为了使多个方法在逻辑上显示为单个方法。在getArea()示例中,虽然物理上有两个方法,但调用者会看到一个逻辑getArea()方法。通过这种方式,getArea()可以扩展到处理其他形状(三角形、梯形等),同时仍然以单一方法在逻辑上呈现自身。

方法也被重载以保持向后兼容性。一个进行复杂计算的方法可能会被赋予一个新的要求,可以选择执行相同的计算,只需稍作更改。将向方法添加一个新参数,该参数将确定如何执行计算-旧方法还是新方法。

为了避免必须查找调用该方法的所有情况并添加新参数,可以重载该方法。新方法将具有旧签名,并由现有代码调用。它本身不包含任何逻辑,只需调用修改后的方法并为新参数传递默认值“old way”。新代码将调用修改后的方法,并用适当的值传递新参数,不管是旧方法还是新方法。

方法重载是一种多态性,在这种多态性中,同一逻辑方法在实践中可以以多种方式使用。方法重载与方法重写不同。方法重写是指父类中方法的定义由子类更改的情况。在这种情况下,两个方法将具有相同的签名。

  • 发表于 2021-12-14 10:22
  • 阅读 ( 110 )
  • 分类:互联网

你可能感兴趣的文章

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

...将全部打印Shape类的显示方法的内容。 什么是c中的过载#(overloading in c#)? 在重载中,多个方法具有相同的名称,但具有不同的参数。参数可以是不同类型的。这些方法也可以有不同数量的参数。方法重载发生在同一个类中。重...

  • 发布于 2020-10-18 23:50
  • 阅读 ( 218 )

静态绑定(static binding)和动态绑定(dynamic binding)的区别

...这两种绑定机制之间的区别。 目录 1. 概述和主要区别 2. 什么是静态绑定 3. 什么是动态绑定 4. 静态绑定与动态绑定的相似性 5. 并列比较-静态绑定与动态绑定的表格形式 6. 摘要 什么是静态绑定(static binding)? 绑定是方法调用和...

  • 发布于 2020-10-19 17:49
  • 阅读 ( 415 )

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

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

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

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

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

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

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

...法。OOP的两大支柱是继承和多态性。 覆盖的关键领域 1.什么是Java中的继承-定义,功能2.什么是Java中的多态性-定义,功能3.Java中继承和多态性的区别是什么-关键区别的比较 关键术语 类、继承、重载、重写、多态性、Java 什么...

  • 发布于 2021-07-01 09:50
  • 阅读 ( 428 )

静止的(static)和java中的动态多态性(dynamic polymorphism in java)的区别

...程序员可以使用Java实现多态性概念。 覆盖的关键领域 1.什么是Java中的静态多态性-定义,功能2.什么是Java中的动态多态性-定义,功能3.Java中静态多态性和动态多态性的区别-主要差异的比较 关键术语 动态绑定,动态多态性,早...

  • 发布于 2021-07-01 21:17
  • 阅读 ( 305 )

函数重载(function overloading)和C++中的重写(overriding in c++)的区别

...决定了调用函数的哪个版本。 函数间重载(between function overloading)和C++中的重写(overriding in c++)的区别 C++中函数重载是编译时多态性,而C++中的函数重写是运行时 重载中有一个特定的关键字,而“Virtual”是函数重写中的一个特定...

  • 发布于 2021-07-08 11:14
  • 阅读 ( 342 )

建造师(constructor)和方法(method)的区别

...。据说方法的名称不能与类的名称相同。施工方法对照表什么是建造师(c***tructor)?Java构造器可以被定义为面向对象程序(OOP),通过它,一系列特定的程序序列将有助于创建一个新的对象。它由显式(参数化构造函数)和隐式...

  • 发布于 2021-07-11 04:32
  • 阅读 ( 208 )

多态性(polymorphism)和超载(overloading)的区别

关键区别:多态特性允许用户用统一的接口处理不同的数据类型和函数。一个可以计算或应用于不同类型值的函数称为多态函数。方法重载是编程语言中的一个特性,它允许创建几个名称相同但在输入和输出类型上不同的方法...

  • 发布于 2021-07-13 06:47
  • 阅读 ( 177 )

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

关键区别:重载意味着在同一类中有两个方法具有相同的名称和不同的参数类型,而重写意味着在同一类中有两个不同的方法具有相同的参数类型,但实现不同。 方法重写和重载是java编程语言中使用的两个概念或技术。这两...

  • 发布于 2021-07-13 21:16
  • 阅读 ( 163 )
jexmfekqk
jexmfekqk

0 篇文章

相关推荐