概念
允许在同一个类中定义多个同名但参数列表不同的方法。包括参数类型不同,参数数量不同,亦或是参数的顺序不同。
优势
可以根据传入的参数类型或数量来执行不同的操作,以提升代码的灵活性和可读性。
执行
- 编译器在编译时会根据方法的参数列表来区分不同的重载方法。
- 在运行时,Java虚拟机(JVM)会根据调用时传递的参数类型、数量和顺序来决定调用哪个重载方法。
- 如果编译器找不到与调用相匹配的重载方法,它会报错,提示找不到合适的方法。
- 方法重载是编译时多态的一种形式,与运行时多态(通过继承和接口实现)不同。
案例
public class overloadingExample{
public void A() {
System.out.println("无参");
}
public void A(int num) {
System.out.println("有一个整型参数:" + num);
}
public void A(Sring str) {
System.out.println("有一个字符串参数:" + str);
}
public void A(int num,String str) {
System.out.println("有一个参数:" + num + " and " + str);
}
public static void main(String[] args){
overloadingExample eg = new overloadingExample();
eg.A();// 调用无参方法
eg.A(12);//调用有一个整型参数的方法
eg.A("world");//调有一个字符串参数的方法
eg.A(12,"world");
}
}
注意
- 重载的方法名必须相同
- 参数列表必须不同
- 访问修饰符可以不同(public、protected、private)
- 抛出异常可以不同