遇到什么問題
需求1:求兩個int類型的數(shù)之和.
public static int getSum1(int a,int b){}
需求2:求兩個float類型的數(shù)之和.
public static float getSum2(float a,float b){}
需求3:求兩個long類型的數(shù)之和.
需求4:求兩個double類型的數(shù)之和.
**上述問題的功能,都是求和,但是因?yàn)閰?shù)列表不同而造成了方法的名稱不同,就給我們帶來很大不利.既然功能相同了,那么方法也應(yīng)該相同**
###怎么解決?
使用方法重載(Overload).
> public static int getSum(int a,int b){}
public static int getSum(float a,float b){}
###什么是方法重載(Overload)
重載方法的定義是在同一個類中,某方法允許存在一個以上的同名方法,只要它們的參數(shù)列表不同即可梅割。
###方法重載的作用
屏蔽了同一功能的方法由于參數(shù)不同所造成的差異
###使用規(guī)則
方法重載判斷原則: **“兩同一不同”**
- **兩同**:同類中,方法名相同;
- **一不同**:方法參數(shù)列表不同(參數(shù)類型选浑、參數(shù)個數(shù)畜份、參數(shù)順序);
**注意:方法重載和方法的返回值類型無關(guān)**
###應(yīng)用場景
- 最常用的應(yīng)用場景:**構(gòu)造器的重載**
```
class User {
private String name;
private int age;
private String id;
//無參構(gòu)造器
public User() {
}
//自定義構(gòu)造器
public User(String name, int age, String id) {
this.name = name;
this.age = age;
this.id = id;
}
}
```
- Java代碼中最常見的使用
為什么`System.out.println();`可以打印任意類型的數(shù)據(jù)角雷?
>查看源代碼發(fā)現(xiàn)存在:
` public void println(boolean x);`
`public void println(char x);`
` public void println(long x);`
`public void println(float x);`
等等代碼.
很顯然,這是方法重載的一個應(yīng)用.