Java中函數重載與函數重寫
方法重載(overloading method) 。方法重載是讓類以統一的方式處理不同類型數據的一種手段。Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法, 這就是多態性。下面是一個方法重載的例子:
Java代碼
class MethodOverloading {
void receive(int i) {
System.out.println("Received one int data");
System.out.println("i=" + i); }
void receive(float f) {
System.out.println("Received one float data");
System.out.println("f=" + f); }
void receive(String s) {
System.out.println("Received a String");
System.out.println("s=" + s);
}
}
注意,Java的方法重載要求同名的方法必須有不同的參數表,僅有返回類型不同是不足以區分兩個重載的方法。
方法重寫(overiding method)
在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類 由此可見: 重載重寫都需要方法名相同; 重載要求參數列表不同; 重寫要求參數列表、返回值都相同(只存在子類中)。 在一個類中,只有重載, 這樣的東西 Java代碼 public class One { public void A(){} public int A(){ return 1; } } 是無法通過編譯的。對於重載而言,並不在乎返回類型。 但是,重載未必在一個類中,子類重載也是可以的。
Java代碼
public class One {
public void A(){
}
}
class ChildOne extends One{
//public int A(){
}
//不倫不類在哪里都不行
public int A(int a){
//重載父類方法 return 1;
}
}
1.重寫發生在父子類上,重載是在同一個類中。
2.重寫的函數參數類型及個數一定一樣,但是重載必須不一樣