有个问题一直搞不明白,我知道可以用参数来区分一个方法,但是为什么不能用返回值来表示一个方法的重载方法,最好能举个例子,谢谢!!!

解决方案 »

  1.   

    int Submit();
    char Submit();但是如果程序这么写
    Submit();而不是int a = Submit();或者char a = Submit();
    那编译器该调用哪个呢?
      

  2.   

    比如,你重载了f()
      int f(){}
      List f(){}
    当你调用f()时,你是调用的哪个呢?
    用返回值来区分重载会造成程序可读性差和不可预知的错误
    所以返回值不能用来区别重载
      

  3.   

    java里允许调用一个有返回值的方法的时候不必将返回值赋给变量;
    这样JVM就不知道你调用的是有返回值的还是没返回值的.

    class Test{
      public static void testMethod(){  }
      public static int testMethod(){  }//姑且假设允许吧
      public static void main(String[] args){
        int i = testMethod();//这个还说的过去 知道是调用哪个
        testMethod();//这个就无法判断调用哪个方法了
      } 
    }
      

  4.   

    举个最简单的例子吧
    class  A
    {
    public static void main(String[] args) 
    {
    System.out.println(new A().b());
    } public int b()
    {
    return 1+2;
    } public double b()
    {
    return 1.2 + 2.4;
    }
    }编译出错 13行(public double b())  已在A中定义了b()
      

  5.   

    import java.util.ArrayList;
    import java.util.List;public class TestGenerics
    {
        //方法1
        public void test(List<String> list)
        {
            System.out.println("List<String>");
    //        return null;
        }
        
        //方法2
        public ArrayList test(List<Object> list)
        {
            System.out.println("List<Object>");
            return null;
        }    //方法3
    //    public void test(List<Object> list)
    //    {
    //        System.out.println("List<Object>");
    //    }    //方法4
    //    public ArrayList test(List<String> list)
    //    {
    //        System.out.println("List<Object>");
    //        return null;
    //    }    
        public static void main(String[] args)
        {
            TestGenerics date = new TestGenerics();
            
            date.test(new ArrayList<Object>());
            date.test(new ArrayList<String>());
            
        }
    }
    首先  上面的代码肯定是对的  
    方法1 和 方法2 确实可以共存   为什么??????? 如果说方法1 和 方法2 的重载是因为List<String>不同于List<Object> 
    那为什么 方法1 和 方法3 不能重载? 如果说方法1 和 方法2 的重载不是因为参数表  那是通过什么来区别?  返回类型吗? 
    那为什么 方法1 和 方法4  不能重载? 难道 对涉及 泛型的 方法重载的规范变了??? 
      

  6.   

    方法1 和 方法2 的参数类型不一样,一个是List<Object> ,一个是List<String>