在 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 中基于不同的返回类型但相同参数类型和数量来重载方法。

在重载中,必须满足以下条件:

  • 相同的方法名称。
  • 不同的参数(不同的类型或不同的数量或两者兼而有之)。

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

示例

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

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

更新于: 2019年7月30日

8K+ 阅读量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告