也谈JAVA中的多态

在这里主要想讨论一下多态中的重载[overload]

 

即:参数和个数,类型,顺序来决定函数的选择

注:返回值的不同不能算做重载

 

常见的参数个数不一样 和  参数为两个完全不一样类型时的重载也不讨论,下面讨论一下不容易区分的一些情况

 

例1。

   static void f(float f){}

   static void f(double d){}

   public static void main(String args[]){

      f(66);

  }

 

  此时会调用哪个呢,这就由重载决议来决定了

 

  重载协议包括:

  1) 由参数的个数,类型和顺序来决定 [一般情况]

  2) 重载方法必须是可以被调用的

       例子

   class A{    

       public static void f(float f, double d){}

       private static void f(double d,float f){}

   }

 

   则  A.f(1,2);  //肯定是调用第一个函数,第二个函数永远调不到

 

   3)精确性原则

   如果几个函数的参数都适合时,如果第1个方法参数类型都可以赋给第2个方法,而第2个方法的参数不可以赋给第1个 

   方法时,第1个方法被保留,重复这个筛选过程,只到最后剩下最后一个方法为止,如果最后有两个方法不能取舍时,则

   编译器会报编译错误

    

这里要记住自动发生的转换: byte -> short -> int -> long -> float -> double

通过上面这里,了解到最开始地个题目是执行float那个方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值