黑马程序员技术交流社区
标题:
关于子父类一个小疑问
[打印本页]
作者:
郭利超
时间:
2013-3-17 11:12
标题:
关于子父类一个小疑问
本帖最后由 ♂超√/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 11:22
敢把报的错误截图传上来吗?
作者:
HM汪磊
时间:
2013-3-17 11:30
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函数,但是返回值类型又不一样,因此就会出错。
作者:
赵晓东
时间:
2013-3-17 11:31
<P> </P>
复制代码
class Test extends Demo
{
public static void main(String[] args)
{
}
public int show(int a,int b) //你这里用的short,肯定不行,因为你无法覆盖父类中的show方法,你要是不想覆盖,就换个函数名
{
return 0;
}
}
class Demo
{
int show(int a,int b)
{
return 0;
}
}
复制代码
QQ截图20130317113123.png
(3.84 KB, 下载次数: 7)
下载附件
2013-3-17 11:31 上传
作者:
123
时间:
2013-3-17 11:47
子类重写父类中的方法,需要遵从一些原则:方法名要相同,形参列表相同,子类方法返回值类型应与父类方法返回值类型相等,或更小,子类的访问权限应比父类方法的访问权限更大或者相等。而现在子类的方法的返回值类型是short,而父类的方法返回值类型是int,所以不行啊。
希望我的回答对你有帮助。
作者:
刘国涛
时间:
2013-3-17 11:49
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方法时就不知道调用哪个了,所以会报错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2