Java中的方法重载

时间:2020-02-23 14:35:27  来源:igfitidea点击:

Java中方法重载的概念是,一个类可以有多个具有相同名称的方法,只要它们的参数构造不同即可。
方法重载类似于构造函数重载,在这里我们可以实现多个构造函数(也具有相同的名称),只要这些构造函数具有不同的参数构造。

Java中的方法重载

  • 方法名称应完全相同。
    Java区分大小写,因此两个名称为foo()的方法
    fOO()完全不同,并且不会在Java中发生方法重载。

  • 重载方法之间的区别是参数。
    重载的方法应具有不同的方法参数。
    例如,不同数量的参数,不同参数的数据类型等。

  • 方法返回类型对于重载没有意义,java编译器将抱怨类中的重复方法。

  • 方法参数名称在方法重载中没有意义。
    因此就Java而言,foo(int index)foo(int i)是相同的。

  • 方法重载也称为编译时多态。
    在Java的OOPS概念上了解更多信息。
    让我们看一下Java中方法重载的一些示例。
    Java示例中的方法重载
    上面的代码段显示了方法重载的经典示例。
    GetAverage类下声明了两个gatherInput()方法。
    在通常情况下,java编译器会显示错误:类型GetAverage中的重复方法collectInput()。
    但是,在这种情况下,我们看到两个方法具有不同的参数列表,这使得在Java中这种方法是允许的。
    方法重载为permissible的实例参数数量:给定重载方法的参数数量,允许在类内进行方法重载不一样。

  • 参数数据类型:如果每个重载方法中的至少一对参数具有不同的数据类型,则在类内允许方法重载。

  • 参数的顺序:类中允许方法重载,因为重载方法的数据类型变量的顺序不相同。

不允许方法重载的实例

  • 方法返回类型:对于具有相同参数列表但方法返回类型不同的方法,该类中禁止方法重载。
    请记住,重载侧重于参数,而不是返回类型。

上面的代码将产生编译器错误:类型为GetAverage的重复方法collectInput(int,double)。

Java类型推广

类型提升是一个Java概念,其中将较小等级的数据类型提升为较高等级的数据类型。
下图说明了数据类型大小提升顺序:

从上图可以看出,字节可以提升为短。
Int数据类型具有三种可能的提升:double,long或者float。

Java中的类型提升和方法重载

类型提升与Java中的方法重载齐头并进。
在传递的值与建立的任何参数数据类型不一致的情况下,类型升级扩展了方法重载的逻辑,以决定使用哪种重载方法。

注意:如果找不到匹配的数据类型,则将通过的值数据类型自动提升为下一行(请参见上图)。

让我们研究一下Java中类型提升和重载的一些示例。

  • 类型提升示例1:
    输出:10类型long在重载的add()方法中传递了两个整数。
    由于没有重载方法拥有(int,int)参数,因此传递的值将被提升为最接近的较大类型,即long。

  • 类型提升示例2:
    输出:10.0类型float这里是int的最接近的较大类型是float,因此输出。

  • 类型提升示例3:
    这里的Java编译器将产生错误,因为类型TypePromotionExample的add(double,int)方法不明确。
    这是因为这两种方法均适用,并且任何一种方法都必须执行类型转换,所以Java编译器无法决定要使用哪种方法。