C語言中文網 目錄

Java方法重載

方法重載是 Java 多態性的表現。在 Java 語言中,同一個類中的兩個或多個方法可以共享同一個名稱,只要它們的參數聲明不同即可,這種情況被稱為方法重載方法重載有兩種情況:普通方法的重載和構造方法的重載。

例如,在 JDK 的 java.io.PrintStream 中定義了十多個同名的 println() 方法。
public void printin(int i){…}
public void println(double d){…}
public void println(String s){…}

這些方法完成的功能類似,都是格式化輸出。根據參數的不同來區分它們,以進行不同的格式化處理和輸出。它們之間就構成了方法的重載。實際調用時,根據實參的類型來決定調用哪一個方法。例如:
System.out.println(102);    //調用println(int i)方法
System.out.println(102.25);    //調用println(double d)方法
System.out.println("價格為 102.25");    //調用println(String s)方法

方法重載時必須要注意以下兩點:
  • 重載方法的參數列表必須和被重載的方法不同,并且這種不同必須足以清楚地確定要調用哪一個方法。
  • 重載方法的返回值類型可以和被重載的方法相同,也可以不同,但是只有返回值類型不同不能表示為重載。

例 1

在比較數值時,數值的個數和類型是不固定的,可能是兩個 int 類型的數值,也可能是兩個 double 類型的數值,或者是兩個 double、一個 int 類型的數值;在這種情況下就可以使用方法的重載來實現數值之間的比較功能。具體實現代碼如下:
public class Overloading
{
    public void max(int a,int b)
    {
        //含有兩個int類型參數的方法
        System.out.println(a>b?a:b);
    }
    public void max(double a,double b)
    {
        //含有兩個double類型參數的方法
        System.out.println(a>b?a:b);
    }
    public void max(double a,double b,int c)
    {
        //含有兩個double類型參數和一個int類型參數的方法
        double max=(double)(a>b?a:b);
        System.out.println(c>max?c:max);
        public static void main(String[] args)
        {
            OverLoading ol=new OverLoading();
            System.out.println("1 與 5 比較,較大的是:");
            ol.max(1,5);
            System.out.println("5.205 與 5.8 比較,較大的是:");
            ol.max(5.205, 5.8);
            System.out.println("2.15、0.05、58 中,較大的是:");
            ol.max(2.15,0.05,58);
        }
    }
}

如上述代碼,在 OverLoading 類中定義了 3 個相同名稱的方法,其參數列表是不相同的。當運行時,Java 虛擬機會根據傳遞過來的不同參數來調用不同的方法。運行結果如下:
1 與 5 比較,較大的是:
5
5.205 與 5.8 比較,較大的是:
5.8
2.15、0.05、58 中,較大的是:
58.0

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo