当前位置: 首页 > 编程笔记 >

我们可以在Java中基于不同的返回类型但参数类型和数字相同的方法重载吗?

徐昕
2023-03-14
本文向大家介绍我们可以在Java中基于不同的返回类型但参数类型和数字相同的方法重载吗?,包括了我们可以在Java中基于不同的返回类型但参数类型和数字相同的方法重载吗?的使用技巧和注意事项,需要的朋友参考一下

当一个类具有两个或多个具有相同名称但参数不同的方法时,在基于传递的参数进行调用时,将调用相应的方法(或相应的方法主体将与调用行动态绑定)。这种机制称为方法重载

示例

class Test{
   public int division(int a, int b){
      int result = a/b;
      return result;
   }
   public double division (float a, float b){
      double result = a/b;
      return result;
   }
}

具有相同参数和不同返回类型的重载-

不,您不能重载基于不同返回类型但Java中参数类型和数字相同的方法。

在重载中,两种方法都必须具有-

  • 一样的名字。

  • 不同的参数(不同的类型或不同的数字或两者兼有)。

返回类型无关紧要。如果它们没有不同的参数,则它们仍然被视为相同的方法,并且会生成编译时错误。

示例

在下面的示例中,我们尝试重载两个方法:它们具有相同的名称(分区),相同的参数(两个整数)。

class Test{
   public int division(int a, int b){
      int result = a/b;
      return result;
   }
   public double division (int a, int b){
      double result = a/b;
      return result;
   }
}

编译时错误

如果尝试编译上述程序,则由于参数没有不同,因此Java编译器会将它们视为相同的方法,并产生以下错误。

OverloadingExample.java:6: error: method division(int,int) is already defined in class Test
public static double division (int a, int b){
                     ^
1 error
 类似资料:
  • 问题内容: 重写的方法可以有不同的返回类型吗? 问题答案: Java支持*协变返回类型的重写方法。这意味着重写的方法可能具有更特定的返回类型。也就是说,只要新的返回类型可分配给你要覆盖的方法的返回类型,就可以使用。 例如: 这在Java语言规范的8.4.5节中指定: 如果返回类型是引用类型,则返回类型在彼此覆盖的方法之间可能会有所不同。返回类型可替换性的概念支持协变返回,即返回类型到子类型的特殊化

  • 在执行基本方法重载程序时,我始终收到以下错误: sh-4.3 $ javac HelloWorld . Java < br > HelloWorld . Java:10:错误:方法show()已在类hello world中定义< br > static void show()< br > hello world . Java:25:错误:方法show(int,int)已在类hello world中

  • 我想这样设置参数的类型: 当我尝试这样做时,会引发错误:NameError:名称'Tree'未定义

  • 重写的方法可以有不同的返回类型吗?

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 问题内容: 为什么仅通过更改返回类型就不可能重载函数?将来的Java版本会改变吗? 顺便说一句,仅供参考,这在C ++中可能吗? 问题答案: 你无法在Java中做到这一点,也无法在C ++中做到这一点。基本原理是,仅返回值不足以使编译器确定要调用的函数: