Ale*_*ler 149
你不能用Java做,也不能用C++做.理由是单独的返回值不足以让编译器找出要调用的函数:
public int foo() {...}
public float foo() {..}
...
foo(); // which one?
Ode*_*ded 47
原因是Java中的重载仅允许具有不同签名的方法.
返回类型不是方法签名的一部分,因此不能用于区分重载.
请参阅Java教程中的定义方法.
Dan*_*kov 22
在Java 5.0之前,当您重写方法时,参数和返回类型必须完全匹配.在Java 5.0中,它引入了一个名为协变返回类型的新工具.您可以使用相同的签名覆盖方法,但返回返回的对象的子类.换句话说,子类中的方法可以返回一个对象,该对象的类型是由超类中具有相同签名的方法返回的类型的子类.
Overloaded java中的方法可能有不同的返回类型,因为参数也不同.
查看示例代码.
public class B {
    public String greet() {
        return "Hello";
    }
    //This will work
    public StringBuilder greet(String name) {
        return new StringBuilder("Hello " + name);
    }
    //This will not work
    //Error: Duplicate method greet() in type B
    public StringBuilder greet() {
        return new StringBuilder("Hello Tarzan");
    }
}