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