java 继承中方法重写的问题

zhanghahahaa 2012-04-26 09:22:35
在疯狂的java讲义时,书中讲到,重写要遵循两同两小一大原则,但是在其他的资料上讲的是三同一小一大.不同的是,前者讲返回类型是子类应小于等于父类的返回类型,后者讲的是等于.我用eclipse测试过了,如果子类返回类型小于父类的,编译器是会报错的,是不是java讲义过时了?
...全文
238 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
星际领导 2012-08-10
  • 打赏
  • 举报
回复

class A {
public A getA() {
return this;
}
}

class B extends A {
public B getA() { //返回类型是父类方法的子类,是可以的
return this;
}
}


Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The return type is incompatible with A.getA()

为什么我的这段报错,我用的JDK1.7
sffx123 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

什么叫小于 extends 算小于(也就是说子类算小于), 还是 super 算小于(也就是说超类算小于)?
如果是extends算小于,那么是对的,如
Java code
class A {
public A getA() {
return this;
}
}

class B extends A {
public B getA() { //返回……
[/Quote]对的
zhanghahahaa 2012-05-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

什么叫小于 extends 算小于(也就是说子类算小于), 还是 super 算小于(也就是说超类算小于)?
如果是extends算小于,那么是对的,如
Java code
class A {
public A getA() {
return this;
}
}

class B extends A {
public B getA() { //返回类……
[/Quote]
出错的地方编译器提示:
Multiple markers at this line
- overrides
testExtendsAndOverwrite.C.getC
- The return type is incompatible with
C.getC()
意思是返回类型与C.getC()方法的不相容.
意思是返回类型必须是相容与C,又或者说,子类返回类型与父类的返回类型相同,或者是父类的子类.应该是这样吧.?!
qybao 2012-04-26
  • 打赏
  • 举报
回复
什么叫小于 extends 算小于(也就是说子类算小于), 还是 super 算小于(也就是说超类算小于)?
如果是extends算小于,那么是对的,如
class A {
public A getA() {
return this;
}
}

class B extends A {
public B getA() { //返回类型是父类方法的子类,是可以的
return this;
}
}

如果是super,那就不对了,如
class A {
public A getA() {
return this;
}
}

class B extends A {
public Object getA() { //返回类型是父类方法的超类,是不可以的
return this;
}
}
fw347969680 2012-04-26
  • 打赏
  • 举报
回复
应该不会吧。去看看。

58,454

社区成员

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

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