黑马程序员技术交流社区

标题: 初学者小问题 [打印本页]

作者: 十甫寸    时间: 2013-8-2 00:57
标题: 初学者小问题
int show (int a, int b) {return 0;}
public short show (int a, int b) {return 0;}
为什么下面的函数不可以和上面的函数出现在同一类中,或者子父类中?
作者: xuaner0719    时间: 2013-8-2 01:30
本帖最后由 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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2