class A
{   void Fun(byte b,int c,float d,double e){}
   void Fun(int b,byte c,float d,double e){}
   void Fun(int b,float b ,byte d,byte e){}
   void Fun(short b,double b,byte d,byte e){}
   public static void main(String arg[])
   { 
      byte b=1,c=2,d=3,e=4;
      A temp=new A();
      temp.Fun(b,c,d,e)
   }
}
到底是调用哪个函数,具体有什么规律没有啊,有编程试了几次,还是总结不出有什么规律.
     

解决方案 »

  1.   

    temp.Fun(b,c,d,e) 
    参数不匹配b,c,c,e都是bype型,而上面的方法都不是这样的参数!!
      

  2.   

    发生了冲突。你把上边的四个方法只留一个,随便留哪个都可以运行。但是。如果随便写其中的两个以上就不能运行。但是为什么为发生冲突就不知道了。
    数据类型提升的方法:先是基本类型的提升:byte-short-int-long-float-double,char-int-long-float-double,如果这样提升后都找不到配置的话,就再做一次封装类型的提升。如果再找不到,就不向上提升了
      

  3.   

    如果你把这4个FUN()函数留下一个的话,就可以了,
    原因是之前的发生了冲突·因为要向上转型配置数据~~
      

  4.   

    方法冲突了,另外,楼主可以在方法中加入System.out.println测试看具体是哪个方法被调用,例如:class A 

      void Fun(byte b, int c, float d, double e){
      System.out.println("Fun # 1");
      } 
      void Fun(int b, byte c, float d, double e){
      System.out.println("Fun # 2");
      } 
      void Fun(int b, float c, byte d, byte e){
      System.out.println("Fun # 3");
      } 
      void Fun(short b, double c, byte d, byte e){
      System.out.println("Fun # 4");
      } 
      public static void main(String arg[]) 
      { 
          byte b=1,c=2,d=3,e=4; 
          A temp=new A(); 
          temp.Fun(b,c,d,e); 
      } 
    }