什麽是方法重载?
一个类中出现多个方法的名称相同,但是形参列表不同,那么这些方法就称为方法重载了
public static void main(String[] args) {
test();
test(1);
}
public static void test(){ //定义test方法
System.out.println("-------test1-------");
}
public static void test(int a){ //再定义一个test方法,此时俩个test方法名相同但是并没有报错
System.out.println("-------test2-------" + a);
}
运行结果
为什么没有报错呢,因为俩个方法虽然名称相同,但是形参列表不同,编译器便认为这是俩个不同的方法?
方法重载注意点:
示例1:
如图俩个方法返回值类型不同,但是名称相同,并没有构成方法重载?
示例2:
如图俩个方法只有形参列表名称不同,并没有构成重载
因为形参名称不同或者返回值类型不同并不能帮助编译器区分俩个方法,假设传入一个int参数,俩个方法都是接受int类型,那么编译器如何知道你是要使用哪个方法呢?返回值类型同理,并不能起到区分俩个方法的效果
方法重载的好处:方便、专业、可读性高
案例:老师需要给同学们发小红花,可以默认全部发一朵,可以选择同学默认发一朵,可以默认全部发指定朵,可以选择同学发指定朵
public class 发小红花 {
public static void main(String[] args) {
Award();
Award("小明");
Award(10);
Award("小明", 10);
}
public static void Award(){ //默认全部发一朵
Award("所有人",1);
}
public static void Award(String name){ //指定同学,数量默认
Award(name,1);
}
public static void Award(int num){ //指定数量,对象默认
Award("所有人", num);
}
public static void Award(String name, int num){ //指定对象和数量
System.out.println("给"+name+"发了"+num+"朵小红花");
}
}
这样就可以通过一个方法名得到多种解决方案,十分优雅?