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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 十甫寸 中级黑马   /  2013-8-2 00:57  /  1172 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int show (int a, int b) {return 0;}
public short show (int a, int b) {return 0;}
为什么下面的函数不可以和上面的函数出现在同一类中,或者子父类中?

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 不是重载

查看全部评分

2 个回复

正序浏览
在同一类中,2个或2个以上的方法可以有同一个名字,但他们的参数声明必须是不同的,才能构成重载。你的代码不能构成重载条件,所以不能写在同一类中。
如果修饰的元素没有任何访问修饰符,则表示friendly,这种情况不能被子类继承,所以也不能写在父子类中。

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 xuaner0719 于 2013-8-2 01:43 编辑

int show (int a, int b) {return 0;}默认的是default
public short show (int a, int b) {return 0;}
同一个类中,重名的函数必须要构成重载,重载的条件:函数名相同,参数列表不同。(参数类型不同,参数个数不同,参数顺序不同)无法构成重载,虚拟机在调用函数时候,函数名相同会根据参数列表来判断,参数列表相同,故会虚拟机无法选择,会出错。
子父类中会继承父类中的方法和属性,当然也是不行的。
            public  protected  default  private

   同一类    ok        ok        ok        ok
   同一包    ok        ok        ok        
   子类       ok        ok   
   不同包    ok

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

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