重載:
同一個類中包含了兩個或兩個以上方法名相同的方法,但是參數的列表不同,這種情況被稱爲方法重載(overload)。
返回值類型、修飾符等,與方法重載沒有關係,只與參數列表有關。
如:
public void Overload(int a, int b) {
}
public void Overload(int a, float b) {
}
public void Overload(int a, int b,int c) {
}
public int Overload(int a, int b) { //這不叫重載,同時存在會報錯
return a+b;
}
private void Overload(int a, int b) { //這也不叫重載
}
Java在調用方法時,會根據參數的不同,自動選擇合適的重載函數,不會出現錯誤。
重寫:
重寫概念是相對於兩個類而言的,在子類中創建了一個與父類中相同名稱、相同返回值類型、相同參數列表的方法,只是方法體中的實現不同,用來實現不同於父類的功能,這種方式被稱爲方法重寫(override),又稱爲方法覆蓋。
例如:@Override下即爲重寫
public class Abstract {
//定義形狀抽象類
public abstract class Shape {
public int width; // 長度
public int height; // 高度,不是寬度。
public Shape(int width, int height) {
this.width = width;
this.height = height;
}
// 定義抽象方法,計算面積area,定義抽象類周長length
public abstract double area();
}
//又定義抽象長方形類,繼承形狀類
public abstract class Square extends Shape{
public Square (int width,int height){
super(width, height );
}
@Override
public double area() { //重寫父類抽象方法
return width*height;
}
注意:聲明爲 final 的方法不能被重寫,父類的成員方法只能被它的子類重寫。
區別:
其實理解了這倆的概念自然就知道區別了,重載是在一個類中多個同名方法;重寫是子類繼承父類的方法,將其重新定義,賦予新功能。
Java小白修煉手冊