遇到什么问题
需求1:求两个int类型的数之和.
public static int getSum1(int a,int b){}
需求2:求两个float类型的数之和.
public static float getSum2(float a,float b){}
需求3:求两个long类型的数之和.
需求4:求两个double类型的数之和.
**上述问题的功能,都是求和,但是因为参数列表不同而造成了方法的名称不同,就给我们带来很大不利.既然功能相同了,那么方法也应该相同**
###怎么解决?
使用方法重载(Overload).
> public static int getSum(int a,int b){}
public static int getSum(float a,float b){}
###什么是方法重载(Overload)
重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。
###方法重载的作用
屏蔽了同一功能的方法由于参数不同所造成的差异
###使用规则
方法重载判断原则: **“两同一不同”**
- **两同**:同类中,方法名相同;
- **一不同**:方法参数列表不同(参数类型、参数个数、参数顺序);
**注意:方法重载和方法的返回值类型无关**
###应用场景
- 最常用的应用场景:**构造器的重载**
```
class User {
private String name;
private int age;
private String id;
//无参构造器
public User() {
}
//自定义构造器
public User(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
}
```
- Java代码中最常见的使用
为什么`System.out.println();`可以打印任意类型的数据?
>查看源代码发现存在:
` public void println(boolean x);`
`public void println(char x);`
` public void println(long x);`
`public void println(float x);`
等等代码.
很显然,这是方法重载的一个应用.