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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 安阳 中级黑马   /  2013-8-16 22:44  /  1752 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 安阳 于 2013-8-16 23:31 编辑

      接口多实现时的问题,必须返回值都一样吗?
  1. class InterfaceDemo {
  2.           public static void main(String[] args) {
  3.                      InterClass ic = new InterClass();
  4.                      ic.show();
  5.           }
  6. }

  7. interface Inter1 {
  8.           public int show();    //此处int改为void才可以,还有其他方法吗?
  9. }

  10. interface Inter2 {
  11.           public void show();
  12. }

  13. class InterClass implements Inter1,Inter2{
  14.           public void show() {
  15.                      System.out.println("Hello World!");
  16.           }
  17. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

5 个回复

倒序浏览
不可以 接口里定义的全部都是 抽象方法 ,抽象方法是没有返回值的, 必须要有abstract 修饰, 如果不写 ,系统会默认会添加的 如果写返回值类型的话, 就要有return语句,  就是要被调用的 , 抽象方法 必须是被实现的 不可以被调用 ,接口也就是为了扩展功能实现 !!!!,   版主给点技术分吧!!!!

点评

抽象方法可以有返回值的  发表于 2013-8-17 00:01
回复 使用道具 举报
此处是因为你实现的两个接口有相同的方法名,且不能重载,这样复写的时候,就不知道要复写哪一个了,这样是不行滴
回复 使用道具 举报
神之梦 发表于 2013-8-17 00:00
此处是因为你实现的两个接口有相同的方法名,且不能重载,这样复写的时候,就不知道要复写哪一个了,这样是 ...

哦,一般不会这样用,只是觉得这样的话,多实现就有点瑕疵

回复 使用道具 举报
覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型(子类方法返回值类型可以是父类方法返回值类型的子类),上面代码中仅复写了Inter2中show方法,并未复写Inter1中的。

还有对于楼上的回答有点质疑:这种说法只是在多继承中,多个父类中有同名方法,在子类中调用时会出现混乱,在实现接口中的抽象方法时,应该可以根据返回值类型判断具体实现的是哪个接口中的方法的。
我是这样理解的,如果理解错误,还请详细赐教。{:soso_e183:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马