Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类参考

Java 有用资源

Java - 方法重载



Java 方法重载

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

方法重载的优点

方法重载提高了代码的可读性并减少了代码冗余。方法重载还有助于实现编译时多态

方法重载示例

如果您观察以下示例,这里我们创建了一个名为 Tester 的类,此类有两个同名(add)且返回类型相同的方法,唯一的区别是它们接受的参数(一个方法接受两个整型变量,另一个接受三个整型变量)。

class Calculator{
   public static int add(int a, int b){
      return a + b;
   }
   public static int add(int a, int b, int c){
      return a + b + c;
   }
}

当您调用 add() 方法时,根据您传递的参数,相应的方法体将被执行。

int result = Calculator.add(1,2);  // returns 3;
result = Calculator.add(1,2,3);    // returns 6;

Java 方法重载的不同方法

在类中具有相同名称的方法时,可以使用以下方法实现方法重载。

  • 使用不同数量的参数
  • 使用不同类型的参数

Java 方法重载的无效方法

在类中具有相同名称的方法时,无法使用以下方法实现方法重载。编译器会抱怨重复方法的存在。

  • 使用不同的返回类型
  • 使用静态和非静态方法

方法重载:不同数量的参数

您可以根据不同数量的参数实现方法重载。

示例:不同数量的参数(静态方法)

在此示例中,我们创建了一个 Calculator 类,它有两个同名但参数不同的静态方法,分别用于添加两个和三个 int 值。在 main() 方法中,我们正在调用这些方法并打印结果。根据传递的参数类型,编译器决定要调用的方法,并相应地打印结果。

package com.tutorialspoint;

class Calculator{
   public static int add(int a, int b){
      return a + b;
   }
   public static int add(int a, int b, int c){
      return a + b + c;
   }
}

public class Tester {
   public static void main(String args[]){
      System.out.println(Calculator.add(20, 40));
      System.out.println(Calculator.add(40, 50, 60));
   }
}

输出

60
150

示例:不同数量的参数(非静态方法)

在此示例中,我们创建了一个 Calculator 类,它有两个同名但参数不同的非静态方法,分别用于添加两个和三个 int 值。在 main() 方法中,我们正在使用 Calculator 类的对象调用这些方法并打印结果。根据传递的参数数量,编译器决定要调用的方法,并相应地打印结果。

package com.tutorialspoint;

class Calculator{
   public int add(int a, int b){
      return a + b;
   }
   public int add(int a, int b, int c){
      return a + b + c;
   }
}

public class Tester {
   public static void main(String args[]){
      Calculator calculator = new Calculator();   
      System.out.println(calculator.add(20, 40));
      System.out.println(calculator.add(40, 50, 60));
   }
}

输出

60
150

方法重载:不同类型的参数

您可以根据不同类型的参数实现方法重载。

示例:不同类型的参数

在此示例中,我们创建了一个 Calculator 类,它有两个同名但参数类型不同的非静态方法,分别用于添加两个 int 值和两个 double 值。在 main() 方法中,我们正在使用 Calculator 类的对象调用这些方法并打印结果。根据传递的参数类型,编译器决定要调用的方法,并相应地打印结果。

package com.tutorialspoint;

class Calculator{
   public int add(int a, int b){
      return a + b;
   }
   public double add(double a, double b){
      return a + b;
   }
}

public class Tester {
   public static void main(String args[]){
      Calculator calculator = new Calculator();   
      System.out.println(calculator.add(20, 40));
      System.out.println(calculator.add(20.0, 40.0));
   }
}

输出

60
60.0
广告