.指出下列哪个方法与方法public void add(int a){}为合理的重载方法。  A public int add(int a)  B public void add(long a)  C public void add(int a,int b)  D public void add(float a) B 为什么不是啊?

解决方案 »

  1.   

    B不是么  如果B不是,D也不是重载的定义就是方法名相同,然后 只要返回值类型、参数类型、参数个数,三者其中之一不同,就是重载函数
      

  2.   

    重载一般不要以返回值来区分,因为这样会造成程序的不稳定和可读性差,所以A不行
    区分重载最简单的规则:每个重载的方法都必须有一个独一无二的参数列表,D选项肯定是重载的了
    至于B,int 和long虽然是不同的类型,但都是整形,虽不能说不是重载,但如果只选一个,还是D更接近
      

  3.   

    说的非常对但是这道题考的…………怎么说呢…………“合理的重载方法”,什么叫“合理”?你的“合理”跟我的“合理”是同一个范围吗? ABCD是重载方法肯定没错,问题就在让人蛋疼的“合理”两个字上。。至于B和原题的方法,只要传递的变量类型正确,程序完全可以正确运行。
      

  4.   

    呵呵,primitive可以被自动的从占用较小存贮空间的数据类型转换到较大的,
      

  5.   

    b、c、d从语法上讲都是对的。但是c最好。
    因为B和D容易引起混乱。
    比如 
    short s=1;
    double d=1.5;
    add(s); //add(int), add(long), add(float) ?
    add(d); //add(int), add(long), add(float) ?
      

  6.   


    重载方法的定义是:方法名相同,参数类型或者参数个数不同称为方法重载,另外,返回值的异同并不能作为方法重载判断的依据。
    综上可见,在方法名相同的前提下,参数类型和参数个数才是决定该方法是否为重载的关键。
    所以现在重新来看上面的问题,不难看出,除了A,其实BCD都是原来方法的重载
    一己之见,欢迎拍砖。
      

  7.   

    要说合理,明显是C,第一个改返回类型作为重载并不合理
    其他两个都是加大了参数的宽度,但是从方法适用范围来说其他两个都完全包含了原题的方法,所以不合理
    C改变了参数列表,需要两个参数,相对比较合理
    这题目很莫名其妙
     A 
    public int add(int a) {
        a++;
        return 0;
    }  B 
    public void add(long a){
        a++;
    } C 
    public void add(int a,int b){
        a++;
    } D 
    public void add(float a){
        a++;
    }原题
    public void add(int a){
        a++;
    }没什么太大的区别,唯一不同的也就是float那个方法内部的a是float如果直接输出结果是带.0的罢了