過載與重寫的區別
阿新 • • 發佈:2020-12-13
技術標籤:java
過載與重寫的區別
過載需要的條件:
在同一個類 中,方法名相同,形參列表不同的多個方 法
例如下面程式碼:
package Pratise;
public class Test {
public static void main(String[] args) {
int x=1;
int y=11;
System.out.println("x+y="+add(x,y));
double o=10.0;
double p=12.0;
System.out. println("o+p="+add(o,p));
}
//定義一個計算兩數相加的方法
public static int add(int a,int b){
return a+b;
}
//過載上面的方法
//根據過載的條件只要使形參列表中的引數型別、引數個數、引數順序,其中的一個不同即滿足過載條件。根據實際開發需要修改即可。
//注意:方法的過載只跟:方法名和形參列表有關,與修飾符,返回值型別無關。
/* 在這裡 public、static為修飾符
* int(第一個)、double(第一個)為返回值型別
* int(第二個和第三個)、double(第二個和第三個)為形參列表的型別
* add 方法名
*
* */
public static double add(double a,double b){
return a+b;
}
}
執行結果:
重寫需要的條件:
1、必須是在一個類(子類)繼承另一個類(父類)中。
2、引數列表(引數個數,引數型別,引數順序)必須跟父類一致
父類
public class Father {
public static void main(String[] args) {
System.out.println(add(1,11));
}
public static int add(int a, int b){
return a+b;
}
}
子類
public class Son extends Father{
public static void main(String[] args) {
System.out.println(add(1,11));
}
public static int add(int a,int b){
return a+b+10;
}
}
在父類執行main方法時,執行父類中的add方法。在子類執行main方法,執行重寫後的方法心中猜一下,結果在頁末。
總結:
位置 | |
---|---|
過載 | 同一個類中 |
重寫 | 子類中 |
修飾符 | |
– | – |
過載 | 無關 |
重寫 | 父類修飾符的許可權要低於子類 |
返回值 | |
– | – |
過載 | 無關 |
重寫 | 父類的返回值範圍低於子類 |
方法名 | |
– | – |
過載 | 必須相同 |
重寫 | 必須相同 |
形參列表 | |
– | – |
過載 | 必須不同 |
重寫 | 必須相同 |
揭曉上面的答案:採用就近原則(如果是其他類呼叫也一樣),哪個類離得近就呼叫哪個
父類
子類