2021-04-18 10:53  阅读(95)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-class-instance.html

Java面向对象设计 - Java方法重载

在同一类中具有多个具有相同名称的方法称为方法重载。

类中具有相同名称的方法可以是声明的方法,继承的方法或两者的组合。

重载方法必须具有不同数量的参数,不同类型的参数或两者。

方法的返回类型,访问级别和throws子句对使其成为重载方法没有任何影响。

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

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

202104181054_1.png

例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)
    
      }
    }
    
点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 方法重载
上一篇
Java 方法返回
下一篇
Java 实例/静态方法