举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java方法重载和重写的区别 Java 方法重载

java方法重载和重写的区别 Java 方法重载

2023-03-14 12:18 Java教程

java方法重载和重写的区别 Java 方法重载

java方法重载和重写的区别

Java方法重载是指在同一个类中,允许存在多个同名的方法,只要它们的参数个数或者参数类型不同即可。重载的目的是为了提高代码的复用性,使得一个方法能够接收不同类型或者不同个数的参数,从而实现不同功能。

而Java方法重写是指子类对父类中已有的方法进行覆盖重写(Override),也就是子类有自己特有的实现方式。重写是多态性的一种表现形式,它能够帮助我们更好地使用、扩展已有的代码。

// 重载
public void print(int a) { 
    System.out.println(a); 
} 
public void print(String b) { 
    System.out.println(b); 
} 

 // 重写 
class A { 
    public void print() { 
        System.out.println("A"); 
    } 
}  

 class B extends A {  

    @Override   // 注解标识此方法是重写  

    public void print() {  

        System.out.println("B");  

    }  

 }  															     

Java 方法重载

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

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

例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 方法重载全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部