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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭卫红   /  2012-3-8 13:13  /  1435 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

提示: 作者被禁止或删除 内容自动屏蔽

4 个回复

正序浏览
现在搞的不是很清楚,我学习学习。
回复 使用道具 举报
A,public int show(int a,int b){return 0;}//√正确的覆写
B,private int show(int a,int b){return 0;}//×权限不够
C,private int show(int a,long b){return 0;}//可以:他和父类不是一个函数,参数不同,不是覆写。相当于重载。
D,public short show(int a,int b){return 0;}//不可以:返回值不同,不是覆写,但又不能和 父类函数同时存在于子类之中,矛盾所以不允许
重载是在一个类中出现同名函数,但是参数不同:不可以只是返回值不同,那样计算机无法做出选择。
覆写是子类覆写父类方法,因为能够覆盖从父类继承的方法,所以除了内容其他必须完全相同。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
子类覆盖父类时至少要有相同的权限,public权限最高,其次是默认权限,private权限最低,所以BC直接排除。静态的只能覆盖静态的。如果子类是静态的,父类必须的静态的。如果子类是非静态的,父类可以是静态的,也可以是非静态的。另外,覆盖(重写)时子父类的方法要一摸一样,包括返回值类型也要一样。由于D的返回值类型是short,与父类的int不一样,故也不行,只能选A。
再给你说下重载与重写的区别。
重载:只看同名函数的参数列表。
重写(覆盖):子父类的方法要一模一样。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
第一个可以, 覆盖了父类中的show()方法;
第二个不行,和第一个的区别就是权限,权限没有父类中的高,无法覆盖
第三个可以,因为参数的类型不同,类似于函数的重载,
第四个不行,相当于同一个函数有两种返回值类型,那么调用这个方法的时候就不知道该返回哪一种类型了

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马