Java方法重载

方法重载是 Java 多态性的表现。在 Java 语言中,同一个类中的两个或多个方法可以共享同一个名称,只要它们的参数声明不同即可,这种情况被称为方法重载。方法重载有两种情况:普通方法的重载和构造方法的重载。

例如,在 JDK 的 java.io.PrintStream 中定义了十多个同名的 println() 方法。

 
  1. public void printin(int i){…}
  2. public void println(double d){…}
  3. public void println(String s){…}


这些方法完成的功能类似,都是格式化输出。根据参数的不同来区分它们,以进行不同的格式化处理和输出。它们之间就构成了方法的重载。实际调用时,根据实参的类型来决定调用哪一个方法。例如:

 
  1. System.out.println(102); //调用println(int i)方法
  2. System.out.println(102.25); //调用println(double d)方法
  3. System.out.println("价格为 102.25"); //调用println(String s)方法


方法重载时必须要注意以下两点:

  • 重载方法的参数列表必须和被重载的方法不同,并且这种不同必须足以清楚地确定要调用哪一个方法。
  • 重载方法的返回值类型可以和被重载的方法相同,也可以不同,但是只有返回值类型不同不能表示为重载。

例 1

在比较数值时,数值的个数和类型是不固定的,可能是两个 int 类型的数值,也可能是两个 double 类型的数值,或者是两个 double、一个 int 类型的数值;在这种情况下就可以使用方法的重载来实现数值之间的比较功能。具体实现代码如下:

 
  1. public class Overloading
  2. {
  3. public void max(int a,int b)
  4. {
  5. //含有两个int类型参数的方法
  6. System.out.println(a>b?a:b);
  7. }
  8. public void max(double a,double b)
  9. {
  10. //含有两个double类型参数的方法
  11. System.out.println(a>b?a:b);
  12. }
  13. public void max(double a,double b,int c)
  14. {
  15. //含有两个double类型参数和一个int类型参数的方法
  16. double max=(double)(a>b?a:b);
  17. System.out.println(c>max?c:max);
  18. public static void main(String[] args)
  19. {
  20. OverLoading ol=new OverLoading();
  21. System.out.println("1 与 5 比较,较大的是:");
  22. ol.max(1,5);
  23. System.out.println("5.205 与 5.8 比较,较大的是:");
  24. ol.max(5.205, 5.8);
  25. System.out.println("2.15、0.05、58 中,较大的是:");
  26. ol.max(2.15,0.05,58);
  27. }
  28. }
  29. }


如上述代码,在 OverLoading 类中定义了 3 个相同名称的方法,其参数列表是不相同的。当运行时,Java 虚拟机会根据传递过来的不同参数来调用不同的方法。运行结果如下:

1 与 5 比较,较大的是:
5
5.205 与 5.8 比较,较大的是:
5.8
2.15、0.05、58 中,较大的是:
58.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值