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;

   }

}

public class OverloadingExample{

   public static void main(String args[]){

      Test obj = new Test();

      System.out.println("division of integers: "+obj.division(100, 40));

      System.out.println("division of floating point numbers: "+obj.division(214.225f, 50.60f));

   }

}

输出结果

division of integers: 2

division of floating point numbers: 4.233695983886719

方法重载应遵循的规则

超载时,您需要牢记以下几点:

  • 两种方法应在同一类中。

  • 方法的名称应相同,但它们应具有不同的数量或参数类型。

如果名称不同,则它们将成为不同的方法,并且如果它们具有相同的名称和参数,则将引发编译时错误,提示“方法已定义”。

示例

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;

   }

}

编译时错误

OverloadingExample.java:6: error: method division(int, int) is already defined in class Test

public static double division (int a, int b){

                     ^

1 error

在覆盖中,如果两种方法都遵循以上两个规则,则它们可以-

  • 有不同的返回类型。

示例

class Test{

   public int division(int a, int b){

      int result = a/b;

      return result;

   }

   public void division (float a, float b){

      double result = a/b;

      System.out.println("division of floating point numbers: "+result);

   }

}

  • 具有不同的访问修饰符-

class Test{

   public int division(int a, int b){

      int result = a/b;

      return result;

   }

   private void division (float a, float b){

      double result = a/b;

      System.out.println("division of floating point numbers: "+result);

   }

}

  • 可以抛出不同的异常-

class Test{

   public int division(int a, int b)throws FileNotFoundException{

      int result = a/b;

      return result;

   }

   private void division (float a, float b)throws Exception{

      double result = a/b;

      System.out.println("division of floating point numbers: "+result);

   }

}

以上是 Java中对方法重载有哪些限制? 的全部内容, 来源链接: utcz.com/z/335049.html

回到顶部