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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郭阳 于 2012-9-10 21:20 编辑

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


再有一个就是如果子类继承父类总有个show方法了,他实现的接口里也有一个show方法,返回值类型不同,调用的时候如何区分

5 个回复

倒序浏览
不行,因为一个类实现A,B接口,有两个方法 void show()和int show(),当调用show()方法时,返回结果,你说是int还是void?这中情况不允许出现。
一个类继承A实现B,如果有同名不同的返回值类型的方法这是不允许的
回复 使用道具 举报
不可以。同时实现了A,B接口,两个方法都得重写。重写方法要求重写的方法要与父类的方法一模一样。覆写下来,就会有两个同名不同返回值得参数。方法的重载只看参数列表。这样两个覆写的方法就冲突了。
回复 使用道具 举报
直接实现,这是不可以的,因为返回值不兼容,不可以覆盖.
但实际应用中这种情况是很有可能出现的,
其实也是可以实现的,只不过方式一不样
要实现这个操作,就是用内部类
这也是内部类一个非常重要的应用.

看代码:
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.

评分

参与人数 1技术分 +1 收起 理由
创出一片辉煌 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这种问题根本不允许出现。写个类验证一下就知道了。编译器给出的错误提示是很清楚的。
回复 使用道具 举报
不可以啦lz
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马