A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭利超 高级黑马   /  2013-3-17 11:12  /  1258 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ♂超√/kun 于 2013-3-17 12:04 编辑

class Demo
{
  int show(int a,int b){return 0;}
}

为什么下面那些函数不可以存在于Demo的子类中。

public short show(int a,int b){return 0;}


感谢大神回答  受教了

点评

如果你的问题得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢!  发表于 2013-3-17 12:05

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
敢把报的错误截图传上来吗?

点评

是不是感觉这个题很迷茫 我也是啊 毕向东视频中的一个题 他一笔带过 貌似每个人都要知道一样 可是我看了两遍就是不知道 难道我忽略了什么  发表于 2013-3-17 11:25
回复 使用道具 举报
class Demo
{
  int show(int a,int b){return 0;}
}
这里的函数 int show(int a,int b){return 0;}返回值类型为int,而子类中函数public short show(int a,int b){return 0;}返回值为short,二者返回值类型不同,子类show函数并没有覆盖父类函数,这就相当于子类中有两个show函数,但是返回值类型又不一样,因此就会出错。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报

  1. <P> </P>
复制代码
  1. class Test extends Demo
  2. {
  3. public static void main(String[] args)
  4. {

  5. }
  6. public int show(int a,int b) //你这里用的short,肯定不行,因为你无法覆盖父类中的show方法,你要是不想覆盖,就换个函数名
  7. {
  8. return 0;
  9. }
  10. }
  11. class Demo
  12. {
  13. int show(int a,int b)
  14. {
  15. return 0;
  16. }
  17. }

复制代码

QQ截图20130317113123.png (3.84 KB, 下载次数: 15)

QQ截图20130317113123.png

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
子类重写父类中的方法,需要遵从一些原则:方法名要相同,形参列表相同,子类方法返回值类型应与父类方法返回值类型相等,或更小,子类的访问权限应比父类方法的访问权限更大或者相等。而现在子类的方法的返回值类型是short,而父类的方法返回值类型是int,所以不行啊。
希望我的回答对你有帮助。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
public short show(int a,int b){return 0;}不可以存在Demo的子类中,如果它存在Demo的子类中,则继承了Demo中的int show(int a,int b){return 0;},short和int类型不同,所以short show不会覆盖int show方法,而当建立对象调用show方法时就不知道调用哪个了,所以会报错。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马