Java 重载

原文: https://javabeginnerstutorial.com/core-java-tutorial/overloading/

重载方法为您提供了一个选项,可以在类中使用与相同的方法名称,但具有不同的参数

Java 方法规则中的重载

有一些与重载方法相关的规则。

重载方法

  • 必须更改参数列表
  • 可以更改返回类型
  • 可以更改访问修饰符(更广泛)
  • 可以声明一个新的或更广泛的受检异常
方法可以在类或子类中重载。

重载方法示例

  1. //Overloaded method with one argument
  2. public void add(int input1, int input2) {
  3. System.out.println("In method with two argument");
  4. }
  5. //Overloaded method with one argument
  6. public void add(int input1) {
  7. System.out.println("In method with one argument");
  8. }

调用重载方法

在几种可用的重载方法中,调用的方法基于参数。

  1. add(3,4);
  2. add(5);

第一个调用将执行第一个方法,第二个调用将执行第二个方法。

引用类型而不是对象决定调用哪个重载方法,和覆盖方法相反。

感谢 Manoj 指出拼写错误。

方法重载备忘单

  • 使用相同的方法名称但使用不同的参数称为重载。
  • 构造器也可以重载
  • 重载的方法必须设置不同的参数。
  • 重载的方法可能具有不同的返回类型。
  • 重载的方法可能具有不同的访问修饰符。
  • 重载的方法可能抛出不同的异常,更宽或更窄的没有限制。
  • 超类中的方法也可以在子类中重载。
  • 多态适用于覆盖和重载。
  • 基于引用类型,确定在编译时间上确定将调用哪个重载方法。

方法重载示例

  1. package com.overloading;
  2. /*
  3. * Here we will learn how to overload a method in the same class.
  4. * Note: Which overloaded method is to invoke is depends on the argument passed to method.
  5. */
  6. public class MethodOverloading {
  7. public static void main(String args[])
  8. {
  9. //Creating object of the class MethodOverloading
  10. MethodOverloading cls = new MethodOverloading();
  11. System.out.println("calling overloaded version with String parameter");
  12. cls.method("Hello");
  13. System.out.println("calling overloaded version with Int parameter");
  14. cls.method(3);
  15. /*
  16. * Here same method name has been used, But with different argument.
  17. * Which method is to invoke is decided at the compile time only
  18. */
  19. }
  20. /*
  21. * Overloaded version of the method taking string parameter
  22. * name of the method are same only argument are different.
  23. */
  24. void method(String str)
  25. {
  26. System.out.println("Value of the String is :"+str);
  27. }
  28. /*
  29. * Overloaded version taking Integer parameter
  30. */
  31. void method(int i)
  32. {
  33. System.out.println("Value of the Int is :"+i);
  34. }
  35. }
  • 使用相同的方法名称但使用不同的参数称为重载。
  • 构造器也可以重载
  • 重载的方法必须设置不同的参数。
  • 重载方法可能具有不同的返回类型。
  • 重载的方法可能具有不同的访问修饰符
  • 重载的方法可能会抛出不同的异常,更宽或更窄的没有限制。
  • 超类中的方法也可以在子类中重载。
  • 多态适用于覆盖和重载。
  • 基于引用类型,确定在编译时确定将调用哪个重载方法。