java方法重写返回值类型

书上有句话是“重写方法的返回值类型必须与被重写方法返回值类型一致或者是其子类”既然这样为什么下面这段代码不对呢?publicclassPerson{}publicclas... 书上有句话是 “重写方法的返回值类型必须与被重写方法返回值类型一致或者是其子类” 既然这样为什么下面这段代码不对呢?
public class Person {}
public class Teacher extends Person{}

public class Super {
public Person say(){
return new Person();
}
}

public class Sub extends Super{
public Teacher say(){
return new Teacher();
}
}
上面的代码分别是在四个类里面写的。在Sub类里的say()方法的位置提示。返回类型与Super.say()不兼容。请问这是什么情况。难道是因为老版本的java不支持重写返回类型是被重写方法返回类型的子类?
展开
 我来答
ZJX_221216
2013-05-10 · 超过19用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:41.1万
展开全部
两个问题:
1、上面这些类你是写在一个文件中还是多个文件,如果是一个文件应该是不行的。
2、你的java是什么版本的,这很关键!

我运行了一遍,没有出现问题,Java的这种机制好像是从Java SE5开始支持的
Foreverhc03
2013-05-10 · 超过23用户采纳过TA的回答
知道答主
回答量:135
采纳率:0%
帮助的人:58.3万
展开全部
是函数重载吗?方法的重载:在一个类中,出现多个方法同名,但参数个数或参数类型不同的方法,则成为方法的重载。
更多追问追答
追问
大神 看清楚 是方法重写(覆盖)
追答
public class Person {}
public class Teacher extends Person{}

public class Super {
public Person say(){
return new Person();
}
}

public class Sub extends Super{
public Teacher say(){
return new Teacher();
}
}这些你在一个类里边写的吗?
第三行类名不能用关键字命名,不可以用Super.
public后边是数据类型,怎能用你定义的父类?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangmingju_
2013-05-10 · TA获得超过837个赞
知道答主
回答量:319
采纳率:100%
帮助的人:106万
展开全部
1秒前

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
grace23450
2015-08-08 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7081
采纳率:77%
帮助的人:2339万
展开全部
重写(Overriding)
(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。
但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
方法重写又称方法覆盖。
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。
如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
(3)子类函数的访问修饰权限不能少于父类的;
(4)返回值类型取决于子类中重写方法的类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jikejishu
2013-05-10 · 超过15用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:46.5万
展开全部
重写只是重写父类的方法,还是关键字的问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式