什么是方法重载?如果我们在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
广告