Java方法重载

在同一类中具有多个具有相同名称的方法称为方法重载。类中具有相同名称的方法可以是声明的方法,继承的方法或两者的组合。
重载方法必须具有不同数量的参数,不同类型的参数或两者。方法的返回类型,访问级别和throws子句对使其成为重载方法没有任何影响。参考以下示例代码,其中有几个名称为 m1 方法。

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;
  }
}

示例-1

下面的代码显示了如何使用重载。参考以下代码 -

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;//from  ww  w. ja  v a 2  s . c  om
  }

  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);
  }
}

上面的代码生成以下结果。

Inside add(int a, int b)
Inside add(double a,  double   b)
Inside add(int a, int b)
Inside add(int a, int b)
Inside add(double a,  double   b)
Inside add(double a,  double   b)

实例-2

有时,重载方法和自动类型扩展可能会混淆编译器,导致编译器错误。

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)

  }
}

上一篇:Java类方法

下一篇:Java实例和静态方法

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程