Java 方法重載

2018-01-18 14:40 更新

Java面向?qū)ο笤O(shè)計(jì) - Java方法重載


在同一類中具有多個(gè)具有相同名稱的方法稱為方法重載。

類中具有相同名稱的方法可以是聲明的方法,繼承的方法或兩者的組合。

重載方法必須具有不同數(shù)量的參數(shù),不同類型的參數(shù)或兩者。

方法的返回類型,訪問級(jí)別和throws子句對(duì)使其成為重載方法沒有任何影響。

import java.io.IOException;

class MyClass {
  public void m1(int a) {
    // Code goes here
  }

  public void m1(int a, int b) {
    // Code goes here
  }

  public int m1(String a) {
    // Code goes here
    return 0;
  }

  public int m1(String a, int b) throws IOException {
    // Code goes here
    return 0;
  }
}

例子

下面的代碼顯示了如何使用重載。

public class Main {
  public double add(int a, int b) {
    System.out.println("Inside add(int a, int b)");
    double s = a + b;
    return s;
  }

  public double add(double a, double b) {
    System.out.println("Inside add(double a,  double   b)");
    double s = a + b;
    return s;
  }

  public static void main(String[] args) {
    Main ot = new Main();
    int i = 1;
    int j = 1;
    double d1 = 10.42;
    float f1 = 22.3F;
    float f2 = 24.5F;
    short s1 = 22;
    short s2 = 26;

    ot.add(i, j);
    ot.add(d1, j);
    ot.add(i, s1);
    ot.add(s1, s2);
    ot.add(f1, f2);
    ot.add(f1, s2);
  }
}

上面的代碼生成以下結(jié)果。

例2

有時(shí),重載方法和自動(dòng)類型擴(kuò)展可能會(huì)混淆編譯器,導(dǎo)致編譯器錯(cuò)誤。

class Adder {
  public double add(int a, double b) {
    return a + b;
  }

  public double add(double a, int b) {
    return a + b;
  }
}

public class Main {
  public static void main(String[] args) {
    Adder a = new Adder();
    // double d = a.add(2, 3); // A compile-time error
    double d1 = a.add((double) 2, 3); // OK. Will use add(double, int)
    double d2 = a.add(2, (double) 3); // OK. Will use add(int, double)

  }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)