老紫竹JAVA基础培训(10),方法的Overload介绍


原文地址:http://www.java2000.net/p11670

测试代码
  1. package lession10;
  2. import java.util.ArrayList;
  3. import java.util.LinkedList;
  4. import java.util.List;
  5. /**
  6.  * 老紫竹JAVA基础培训(10),方法的Overload介绍.<br>
  7.  * 匹配方式为最特殊匹配,或者叫最准确匹配<br>
  8.  * 如果发现多个都有相同的匹配度,则编译报错。
  9.  * 
  10.  * @author 老紫竹 JAVA世纪网(java2000.net)
  11.  * 
  12.  */
  13. public class Lession10 {
  14.   public void test1(byte id) {
  15.     System.out.println("test1(byte);");
  16.   }
  17.   public void test1(short id) {
  18.     System.out.println("test1(short);");
  19.   }
  20.   public void test1(int id) {
  21.     System.out.println("test1(int);");
  22.   }
  23.   public void test1(long id) {
  24.     System.out.println("test1(long);");
  25.   }
  26.   public void test1(float id) {
  27.     System.out.println("test1(float);");
  28.   }
  29.   public void test1(double id) {
  30.     System.out.println("test1(double);");
  31.   }
  32.   public void test2(Object o) {
  33.     System.out.println("test2(Object);");
  34.   }
  35.   public void test2(String o) {
  36.     System.out.println("test2(String);");
  37.   }
  38.   public void test2(Integer o) {
  39.     System.out.println("test2(Integer);");
  40.   }
  41.   public void test2(List o) {
  42.     System.out.println("test2(List);");
  43.   }
  44.   public void test2(ArrayList o) {
  45.     System.out.println("test2(ArrayList);");
  46.   }
  47.   public void test3(int a, float b) {
  48.     System.out.println("test3(int,float);");
  49.   }
  50.   public void test3(long a, double b) {
  51.     System.out.println("test3(long,double);");
  52.   }
  53.   public static void main(String[] args) {
  54.     Lession10 o = new Lession10();
  55.     o.test1(1); // 整数默认为 int
  56.     o.test1((byte1); // 强制调用 byte
  57.     o.test1((short1); // 强制调用 short
  58.     o.test1(1L); // long
  59.     o.test1(1.0); // 小数默认为 double
  60.     o.test1(1.0F); // 强制调用float
  61.     //
  62.     o.test2(new Object()); // 对象类型
  63.     o.test2("String"); // 字符串比对象更准确
  64.     o.test2(new Integer(3)); // 整数对象
  65.     o.test2(3); // JDK 5及以上
  66.     o.test2(new LinkedList()); // 调用更匹配的List
  67.     o.test2(new ArrayList()); // 调用 ArrayList
  68.     //
  69.     // 强制转换测试
  70.     o.test2((Object) new ArrayList()); // 以强制后的类型进行屁屁额
  71.     o.test2((List) new ArrayList());// 以强制后的类型进行屁屁额
  72.     // 多参数测试
  73.     o.test3(12);
  74.     o.test3(1L, 3);
  75.     o.test3(1, 3D); // 自动升级优先,int可以自动升级到long,float可以自动升级到double
  76.     //
  77.     // o.test2(null); // 不能确定匹配度的测试
  78.   }
  79. }
写一下运行结果大家参考
test1(int);
test1(byte);
test1(short);
test1(long);
test1(double);
test1(float);
test2(Object);
test2(String);
test2( Integer);
test2(String);
test2(List);
test2(ArrayList);
test2(Object);
test2(List);
test3(int,float);
test3(long,double);
test3(long,double);


测试:
1 其中最后一个带有注释,大家可以去掉注释看看编译效果,熟悉一些这个错误。

2 数字是最容易混淆的,大家可以用各种数字混合看看, 整数可以转化为对应精度的浮点数

3 增加更多的参数类型,一般不超过5个,测试各种组合的系统匹配情况,加深印象。



总结:
  1 以最贴切,最准确的匹配进行调用

  2 如果没有完全匹配的,则进行允许的不丢失精度的类型转换,int可以升级为long,float可以升级为double, 整数可以升级为浮点数

  3 如果还没有匹配的,则报错



 4 如果发现有多个匹配的,无法确定到底是哪一个,则编译报错


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值