重載(overloading):
1. 在同一個類中, 方法(又稱函數)名稱相同, 但是參數類型或者個數不一樣,
2. 返回值類型可以相同, 也可以不相同。不能以返回值來判斷是否是方法重載
3. 普通的方法重載
public static long sum(inta, intb) {
returna + b;
}
public static long sum(longa, longb) {
returna + b;
}
4. 構造方法重載
public class Person {
privateDoubleweight;
private Integer height;
public Person() {}
publicPerson(Double weight) {
this.weight= weight;
}
publicPerson(Double weight,Integer height) {
this.weight= weight;
this.height= height;
}
}
5. 方法重載的一些約定俗成:
- 爲了方便開發, 我們要返回相同的類型
- 爲了方便閱讀和開發, 重載的函數,按照參數的個數順序來排序
重寫(overriding):
1. 當一個類繼承父類的時候,那麼這個類就繼承了父類的方法
2. 如果子類想對父類的方法做一些修改, 那麼就需要修改父類中的方法, 這個過程就叫方法重寫(也稱方法覆蓋)
3. 方法重寫必須遵守的規則:
- 重寫的方法必須與被重寫的方法參數列表保持一致
- 重寫的方法必須與被重寫的方法返回類型保持一致
- 重寫的方法的訪問控制修飾符必須大於被重寫方法的訪問控制修飾符(當然private除外, 因爲priavte定義的方法無法被子類訪問到), public > protected> default
- 重寫的方法不能拋出新的檢查異常(checked exception), 也不能拋出比被重寫方法更加寬泛的檢查性異常
public class Parent {
String print(String msg) throwsRuntimeException {
return"父類msg: "+ msg;
}
}
public class ChildextendsParent {
@Override
publicStringprint(String msg)throwsNullPointerException {
return"子類msg:"+ msg;
}
}
- 爲了方便開發和閱讀, 請使用Override進行精確重寫