1. 程式人生 > 其它 >過載與重寫的區別

過載與重寫的區別

技術標籤: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方法,執行重寫後的方法心中猜一下,結果在頁末。
總結:

位置
過載同一個類中
重寫子類中
修飾符
過載無關
重寫父類修飾符的許可權要低於子類
返回值
過載無關
重寫父類的返回值範圍低於子類
方法名
過載必須相同
重寫必須相同
形參列表
過載必須不同
重寫必須相同

揭曉上面的答案:採用就近原則(如果是其他類呼叫也一樣),哪個類離得近就呼叫哪個
父類
在這裡插入圖片描述
子類在這裡插入圖片描述