什么是超载?如果我们重载Java中的main方法会怎样?

重载是实现多态的机制之一。如果一个类包含两个具有相同名称和不同参数的方法,则每次调用此方法时,方法主体将与基于参数的方法调用绑定在一起。

示例

在以下Java程序中,Calculator类具有两个带有名称加法的方法Ť他只在它们之间的区别是,一个包含3个参数,另一个包含2个参数。

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

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

重载的主要方法

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

但是,当我们执行该程序时,JVM会搜索主要方法,该方法是公共的,静态的,返回类型为void,并将String数组作为参数,然后调用它。它从不调用以其他类型作为参数的main方法。

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

-如果未找到这种方法,则会生成运行时错误。

示例

在以下示例中,我们尝试重载公共静态voidmain()方法(通过使用两个具有不同参数的主要方法),一个方法接受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
猜你喜欢