黑马程序员技术交流社区

标题: 接口多实现时的问题 [打印本页]

作者: 安阳    时间: 2013-8-16 22:44
标题: 接口多实现时的问题
本帖最后由 安阳 于 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. }
复制代码

作者: Steven__    时间: 2013-8-16 22:55
不可以 接口里定义的全部都是 抽象方法 ,抽象方法是没有返回值的, 必须要有abstract 修饰, 如果不写 ,系统会默认会添加的 如果写返回值类型的话, 就要有return语句,  就是要被调用的 , 抽象方法 必须是被实现的 不可以被调用 ,接口也就是为了扩展功能实现 !!!!,   版主给点技术分吧!!!!
作者: 神之梦    时间: 2013-8-17 00:00
此处是因为你实现的两个接口有相同的方法名,且不能重载,这样复写的时候,就不知道要复写哪一个了,这样是不行滴
作者: 安阳    时间: 2013-8-17 00:24
神之梦 发表于 2013-8-17 00:00
此处是因为你实现的两个接口有相同的方法名,且不能重载,这样复写的时候,就不知道要复写哪一个了,这样是 ...

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


作者: 焦允    时间: 2013-8-17 00:48
覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型(子类方法返回值类型可以是父类方法返回值类型的子类),上面代码中仅复写了Inter2中show方法,并未复写Inter1中的。

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




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