日期:2014-05-20  浏览次数:21118 次

重载能否改变返回值的类型?
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

疑问: 不知大家是怎么理解红色那句话的? 我认为是不能的, 返回类型不一样都不能构成重载了.

int (int x){
  ......
}


void (int x){
  ......
}


------解决方案--------------------
我也认为不能.
------解决方案--------------------
恩,连编译都不能通过!
------解决方案--------------------
http://blog.csdn.net/jk88811/archive/2007/09/21/1794866.aspx

int (int x){ 
...... 

void (int x){ 
...... 

这样的重载将编译出错

而类似
int method(List<Integer> i) {

}
String method(List<String> s) {

}
这样的被称为泛型重载, List<Integer>和List<String>在运行时的类型都是List, 但这样的重载是可以的...



------解决方案--------------------
来自Java32问。
------解决方案--------------------
重载的4个特性:1函数名相同。。。。2返回类型相同。。。。3函数名字相同。。。4参数个数相同
------解决方案--------------------
Java code

Overloaded的方法是可以改变返回值的类型。
这句话是正确的,唯一区分方法重载的是方法的参数列表不同,当参数列表不同时就可改变其返回类型
package alltest;
public class OverLoadTest {
    public void m1(int x){}
    public int m1(int x,int y){return 12;}
//    public String m1(int x){return "12";} //error!Duplicate method m1(int)
                                              //in type OverLoadTest 
    public String m1(int x,int y,int z){return "abc";}
    public int m1(String x,int y){return 12;};

}

当参数列表不同时,能达到区分重载时,就可以改变方法的返回类型

------解决方案--------------------
可以啊 , 楼上 正解
------解决方案--------------------
8楼正解,但是根据返回类型不同,来区分重载是不行的。
------解决方案--------------------
Java code
    public Object Function(){
        return null;
    }
    
    public int Function(String A){
        return 0;
    }
    
    public void Test(){
        // 方法2重载了方法1
        Object _Result1 = Function();  // 调用方法1
        int _Result2 = Function("1"); // 调用方法2
    }

------解决方案--------------------
重载主要表现在参数上面,当能够区分重载时在改变返回值类型.
------解决方案--------------------
重载在改变了参数特征的情况下,可以。
------解决方案--------------------
重载是说在同一个类中(与父类与无关吧)方法名称相同,参数的个数,或者类型,或者顺序不同就叫重载了。所以说与方法的返回值类型无关,想返回什么就返回什么。
------解决方案--------------------
可以的
------解决方案--------------------
8楼正解
------解决方案--------------------
Java 不允许仅返回值不同的方法的!