1. 程式人生 > >java -> 方法的重載

java -> 方法的重載

stat enter ack 數字 ret 以及 實現 eth 1.2

方法的重載

我們假設要在程序中實現一個對數字求和的方法,由於參與求和數字的個數和類型都不確定,因此要針對不同的情況去設計不同的方法。接下來通過一個案例來實現對兩個整數相加、對三個整數相加以及對兩個小數相加的功能,具體實現如下所示。MethodDemo02.java

public class MethodDemo02 {

public static void main(String[] args) {

// 下面是針對求和方法的調用

int sum1 = add01(1, 2);

int sum2 = add02(1, 2, 3);

double

sum3 = add03(1.2, 2.3);

// 下面的代碼是打印求和的結果

System.out.println("sum1=" + sum1);

System.out.println("sum2=" + sum2);

System.out.println("sum3=" + sum3);

}

// 下面的方法實現了兩個整數相加

public static int add01(int x, int y) {

return x + y;

}

// 下面的方法實現了三個整數相加

public

static int add02(int x, int y, int z) {

return x + y + z;

}

// 下面的方法實現了兩個小數相加

public static double add03(double x, double y) {

return x + y;

}

}

運行結果如下圖所示。

圖1-1 運行結果

從上述代碼不難看出,程序需要針對每一種求和的情況都定義一個方法,如果每個方法的名稱都不相同,在調用時就很難分清哪種情況該調用哪個方法。

為了解決這個問題,Java允許在一個類中定義多個名稱相同的方法,但是參數的類型或個數必須不同,這就是方法的重載。

下面的三個方法互為重載關系

l public static int add(int x,int y) {邏輯} //兩個整數加法

l public static int add(int x,int y,int z) {邏輯} //三個整數加法

l public static int add(double x,double y) {邏輯} //兩個小數加法

接下來通過方法重載的方式進行修改,如下所示。MethodDemo03.java

public class MethodDemo03 {

public static void main(String[] args) {

// 下面是針對求和方法的調用

int sum1 = add(1, 2);

int sum2 = add(1, 2, 3);

double sum3 = add(1.2, 2.3);

// 下面的代碼是打印求和的結果

System.out.println("sum1=" + sum1);

System.out.println("sum2=" + sum2);

System.out.println("sum3=" + sum3);

}

// 下面的方法實現了兩個整數相加

public static int add(int x, int y) {

return x + y;

}

// 下面的方法實現了三個整數相加

public static int add(int x, int y, int z) {

return x + y + z;

}

// 下面的方法實現了兩個小數相加

public static double add(double x, double y) {

return x + y;

}

}

MethodDemo02.java的運行結果和MethodDemo03.java一樣,如下圖所示。

圖1-2 運行結果

上述代碼中定義了三個同名的add()方法,它們的參數個數或類型不同,從而形成了方法的重載。

在main()方法中調用add()方法時,通過傳入不同的參數便可以確定調用哪個重載的方法,如add(1,2)調用的是兩個整數求和的方法。值得註意的是,方法的重載與返回值類型無關,它只有兩個條件,一是方法名相同,二是參數個數或參數類型不相同。

重載的註意事項

  重載方法參數必須不同:

    參數個數不同,如method(int x)與method(int x,int y)不同

    參數類型不同,如method(int x)與method(double x)不同g

    參數順序不同,如method(int x,double y)與method(double x,int y)不同

  重載只與方法名與參數類型相關與返回值無關

    如void method(int x)與int method(int y)不是方法重載,不能同時存在

  重載與具體的變量標識符無關

    如method(int x)與method(int y)不是方法重載,不能同時存在

java -> 方法的重載