黑马程序员技术交流社区

标题: 存在同名不同返回值方法的两个接口可以同时实现吗 [打印本页]

作者: 郭阳    时间: 2012-9-9 04:08
标题: 存在同名不同返回值方法的两个接口可以同时实现吗
本帖最后由 郭阳 于 2012-9-10 21:20 编辑

存在同名不同返回值方法的两个接口可以同时实现吗
  1. interface A
  2. {void show();}
复制代码
  1. interface B
  2. {int show();}
复制代码
一个类可以同时实现他们两个接口吗?


再有一个就是如果子类继承父类总有个show方法了,他实现的接口里也有一个show方法,返回值类型不同,调用的时候如何区分
作者: 杨千里    时间: 2012-9-9 04:56
不行,因为一个类实现A,B接口,有两个方法 void show()和int show(),当调用show()方法时,返回结果,你说是int还是void?这中情况不允许出现。
一个类继承A实现B,如果有同名不同的返回值类型的方法这是不允许的
作者: 王陶成    时间: 2012-9-9 08:23
不可以。同时实现了A,B接口,两个方法都得重写。重写方法要求重写的方法要与父类的方法一模一样。覆写下来,就会有两个同名不同返回值得参数。方法的重载只看参数列表。这样两个覆写的方法就冲突了。
作者: Tesla时光    时间: 2012-9-9 09:09
直接实现,这是不可以的,因为返回值不兼容,不可以覆盖.
但实际应用中这种情况是很有可能出现的,
其实也是可以实现的,只不过方式一不样
要实现这个操作,就是用内部类
这也是内部类一个非常重要的应用.

看代码:
interface A
{
void show();
}
interface B
{
int show();
}
class Test implements A
{
public void show()
{}
public class Test1 implements B
{
  public int show()
  {
   return 5;
  }

}
}
最后注意一点:实现方法一定要加public.


作者: 舒远    时间: 2012-9-9 09:26
这种问题根本不允许出现。写个类验证一下就知道了。编译器给出的错误提示是很清楚的。
作者: 陈俊来    时间: 2012-9-9 20:26
不可以啦lz




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