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