什么是方法重载?如果我们在Java中重载main方法会发生什么?


**方法重载**是实现多态的一种机制。如果一个类包含两个名称相同但参数不同的方法,那么每次调用此方法时,方法体将根据参数与方法调用绑定。

示例

在下面的Java程序中,Calculator类有两个名为addition的方法。它们之间的唯一区别在于一个包含3个参数,另一个包含2个参数。

在这里,我们可以通过传递两个整数或三个整数来调用addition方法。根据我们传递的整数数量,将执行相应的方法。

 在线演示

public class Calculator {
   public int addition(int a , int b){
      int result = a+b;
      return result;
   }
   public int addition(int a , int b, int c){
      int result = a+b+c;
      return result;
   }
   public static void main(String args[]){
      Calculator cal = new Calculator();
      System.out.println(cal.addition(12, 13, 15));
   }
}

输出

40

重载main方法

是的,我们可以在Java中重载main方法,即我们可以通过更改参数来编写多个public static void main()方法。如果我们这样做,程序将在编译时不会出现编译错误。

但是,当我们执行此程序时,JVM会搜索具有public、static、返回类型为void以及String数组作为参数的main方法,并调用它。它永远不会调用具有其他类型参数的main方法。

public static int main(String[] args){
}

**注意** - 如果找不到这样的方法,则会生成运行时错误。

示例

在下面的示例中,我们尝试重载public static void main()方法(通过使用具有不同参数的两个main方法),一个接受String数组作为参数,另一个接受整数数组作为参数 -

 在线演示

public class OverloadingMain {
   public static void main(String args[]) {
      System.out.println("main method with String array as arguments");
   }
   public static void main(int args[]) {
      System.out.println("main method with integer array as arguments");
   }
}

输出

当我们执行此程序时,带有整数数组作为参数的main方法永远不会被调用。

main method with String array as arguments

更新于:2020年6月29日

7000+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告