重载能否改变返回值的类型?

叙言.ZXF 2007-11-11 12:39:54
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

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

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

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


void (int x){
......
}
...全文
8761 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixiao21 2012-07-10
  • 打赏
  • 举报
回复
以前是不可以的,但是现在出了个泛型重载,Overloaded的方法可以改变返回值的类型。
liu2295411 2012-06-12
  • 打赏
  • 举报
回复
那是因为你的参数类型个数都一样。。。
yangshouzhong 2012-05-24
  • 打赏
  • 举报
回复
返回类型不一样那就不叫重载了!!
public String Student();
public String Student(int i);
public String Student(int i,String j);
public String Student(int i,String S,int k);
yuyinniaoniao 2011-10-27
  • 打赏
  • 举报
回复
2楼的:
泛型重载? 不要自己创造发明, 你那泛型重载,不管你信不信,我是不信!
zw1502071 2011-10-26
  • 打赏
  • 举报
回复
呵呵,楼主,我也看到了这道面试题,也有这个疑问,太巧了,解决了,哈哈哈
bosslichuan 2011-09-22
  • 打赏
  • 举报
回复
8楼解释不错,,,有道理
米西米西 2011-07-26
  • 打赏
  • 举报
回复
感谢,学习了。
wan423016 2011-04-26
  • 打赏
  • 举报
回复
楼上正解
煜柠 2011-04-26
  • 打赏
  • 举报
回复
我的理解是,重载可以改变返回值类型,但是如果只是返回值类型不一样是算不上重载的。重载的判断条件还是根据参数来,只不过是说重载的函数可以返回值不一样,就是说重载可以决定返回值类型,但是返回值类型不能决定重载,不知道明白不明白。。
gfmtd 2011-01-02
  • 打赏
  • 举报
回复
int (int x){
......
}


void (int x){
......
}
以上代码不是重载,因重载是方法的参数列表必须不相同,参数个数、参数类型、参数顺序,只要满足其一就行,如果改为下确的重载
int (int x){
......
}


void (int x,int y){
......
}
则可以通过编译
ftgreat 2007-11-16
  • 打赏
  • 举报
回复
Java 不允许仅返回值不同的方法的!
yilinhust 2007-11-16
  • 打赏
  • 举报
回复
8楼正解
网络咖啡 2007-11-15
  • 打赏
  • 举报
回复
可以的
awusoft 2007-11-15
  • 打赏
  • 举报
回复
重载是说在同一个类中(与父类与无关吧)方法名称相同,参数的个数,或者类型,或者顺序不同就叫重载了。所以说与方法的返回值类型无关,想返回什么就返回什么。
MagnificentKun 2007-11-15
  • 打赏
  • 举报
回复
重载在改变了参数特征的情况下,可以。
yutong1984 2007-11-15
  • 打赏
  • 举报
回复
重载主要表现在参数上面,当能够区分重载时在改变返回值类型.
sdd330 2007-11-15
  • 打赏
  • 举报
回复
Override重写的话JDK1.4是需要返回类型一样才可以重写父类的方法的,但是到了JDK1.5增加了一个协变返回类型所以这个约束也不存在了。
sdd330 2007-11-15
  • 打赏
  • 举报
回复
	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
}

这样是可以的啊, 重载参数列表不同,返回类型也可以不一样。
yangxiao_jiang 2007-11-12
  • 打赏
  • 举报
回复
8楼正解,但是根据返回类型不同,来区分重载是不行的。
ioodo0 2007-11-12
  • 打赏
  • 举报
回复
可以啊 , 楼上 正解
加载更多回复(8)

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧