黑马程序员技术交流社区

标题: 下列哪些函数可以存在于Demo的子类中 [打印本页]

作者: pig3156661    时间: 2014-7-31 22:34
标题: 下列哪些函数可以存在于Demo的子类中
class Demo
{
        int show(int a,int b)
        {return 0 ;}
}
问下列哪些函数可以存在于Demo的子类中
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;}
E. static int show (int a, int b){return 0;}

视频里面的一道题,别的都明白,就是D不明白为什么不可以和给定函数出现在子父类中,求大神给解答。
作者: fantacyleo    时间: 2014-7-31 22:50
这个,我也以为D是可以的。查了一下Java语言规范,很遗憾,规定说如果返回值是基本类型,那么return的类型和返回值类型必须一模一样。只有当返回值是引用类型时,才允许return 子类对象给父类返回值。
作者: pig3156661    时间: 2014-7-31 23:09
fantacyleo 发表于 2014-7-31 22:50
这个,我也以为D是可以的。查了一下Java语言规范,很遗憾,规定说如果返回值是基本类型,那么return的类型 ...

呃……没听太明白,就是说基本类型的话,子父类的返回值类型需要一样,如果是引用类型,那子父类返回值类型就可以不一样了?
作者: 江苏孙浩    时间: 2014-7-31 23:10
D 返回类型的问题。既然是覆盖,那么怎能提供毫不相干的返回类型,short又不能自动转型为int
作者: fantacyleo    时间: 2014-7-31 23:12
pig3156661 发表于 2014-7-31 23:09
呃……没听太明白,就是说基本类型的话,子父类的返回值类型需要一样,如果是引用类型,那子父类返回值类 ...

当你在覆盖父类方法时,如果父类方法的返回值是基本类型,那么子类方法的返回值必须和父类一模一样。如果父类方法的返回值是引用类型,那么子类覆盖方法的返回值可以是父类方法返回值的子类
作者: 南柯一梦    时间: 2014-7-31 23:36
是Dmeo子类,说明这个类继承Demo,即这个类也有Demo方法,而同一个类中除了重载或重写外,不允许有类名重复方法,而D,E既不是重载也不是重写,当然不可以存在了
作者: Peach2014    时间: 2014-8-1 00:15
函数重载的说明说的很清楚的:参数个数不同或者参数类型不同;而返回值类型不同并不满足重载的要求。
作者: pig3156661    时间: 2014-8-1 10:19
谢谢楼上大家的帮忙!我明白了!




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