重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同
也可以不相同。无法以返回型别作为重载函数的区分标准。
我想问一下,为什么不以返回值的类型也作为判断标准呢,JVM在这里是怎样工作的?

解决方案 »

  1.   

    这个问题think in java 里有提到。
    两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo();   但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。
      

  2.   

    这个问题think in java 里有提到。
    两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo();   但程序员直接使用XXX.getNo();也是可以的。这样的话就无法与第二个方法区别,系统就无法区分该执行哪个方法了。
      

  3.   

    主要是因为java调用函数时可以不使用赋值语句
      

  4.   

    这样的例子太多了。
    int getNo()、short getNo();
    直接调用 getNo();
    你选择哪个。
    在举个例子
    double a = getNo();
    当然光举例不能说明问题。
    有的时候一个函数有没有返回值并不重要,但是参数是必须要考虑的问题。
      

  5.   

    method的名字和parameter的类型被称为method的signature,
    要完整的表述一个method就需要确定其signature。假如return value也是signature的一部分
    那么假设有两个method分别为:
    public String getWhatIHave(String s)和
    public void getWhatIHave(String s);
    则可以overload这两个method。虽然如果在程序中调用:
    String giveMeWhatYouHave = MyClass.getWhatIHave(String s);
    可以区分上面两个method,但如果如果程序为:
    MyClass.getWhatIHave(String s);
    Java则无法分辨该两种method。
      

  6.   

    [Quote=引用 11 楼  的回复:]重载是在横向的,一个类内部的方法间
    重写是纵向的,是父类和子类间的签名一样的方法间,是子类以另一种方式实现父类里的同签名方法
    [/Quote
    写的不错
      

  7.   

    JVM可以接收的 方法里面的参数,返回类型,并不是JVM所关心的,一个方法的使用,在经JVM的时候,JVM参考的是他的参数。
        明白不?
      

  8.   

    这个问题think in java 里有提到。
    两个方法int getNo()、void getNo()通常我们是 int value = XXX.getNo(); 但程序员直接使用XXX.getNo();也是可以的。
      

  9.   

    因为你调用方法的时候不会调用方法类型,只会用到方法名和参数举个例子说明返回值起不到区分作用Class XXX{
    void getName();
    String getName();
    } 后来调用了System.out.println(xxx.getName());这时候无法知道到底调用了哪一个方法,所以返回值不能作为重载的区分标准