黑马程序员技术交流社区

标题: 接口中一个容易忽略的细节 [打印本页]

作者: mingtianrsm    时间: 2014-10-3 18:45
标题: 接口中一个容易忽略的细节
在学习继承时,学习了接口的实现,其中一个细节非常容易忽略。接口与接口之间是通过继承extends实现的,而且可以多继承。
作者: 白金角斗士    时间: 2014-10-3 20:33
哥们儿,是不是搞错了。

类与类之间才是继承关系,java里可以说支持多继承,但是仅仅在接口以多实现的方式体现的

接口与接口之间是实现关系,并且可以多实现。
作者: 残羹夜宴丶    时间: 2014-10-4 06:56
白金角斗士 发表于 2014-10-3 20:33
哥们儿,是不是搞错了。

类与类之间才是继承关系,java里可以说支持多继承,但是仅仅在接口以多实现的方式 ...

这个35天那个视频说过,接口是通过继承。而且是多继承。
作者: 黑马小菜菜    时间: 2014-10-4 11:14
我刚看了视频,但是接口之间是继承关系还是实现关系我忘了!:funk:
作者: inception    时间: 2014-10-4 13:43
白金角斗士 发表于 2014-10-3 20:33
哥们儿,是不是搞错了。

类与类之间才是继承关系,java里可以说支持多继承,但是仅仅在接口以多实现的方式 ...

接口A,接口B,

你写程序是写   A   extends  B
还是写  A  implements   B

自己想想
作者: 唐王潮    时间: 2014-10-4 17:02
必须是 A   extends  B
作者: kid1943    时间: 2014-10-6 10:09
一个接口可以继承另一个接口,一个普通类可以实现多个接口,而一个抽象类可以实现一个接口。
可以参考一下如下的代码:
  1. interface A {
  2.         void mA();
  3. }

  4. interface B extends A {
  5.         void mB();

  6. }

  7. class Tmp implements B {

  8.         @Override
  9.         public void mA() {
  10.                 // TODO Auto-generated method stub
  11.                 System.out.println("I am A");
  12.         }

  13.         @Override
  14.         public void mB() {
  15.                 // TODO Auto-generated method stub
  16.                 System.out.println("I am B");
  17.         }

  18. }

  19. class Test {

  20.         public static void main(String args[]) {
  21.                 Tmp t = new Tmp();
  22.                 t.mA();
  23.                 t.mB();

  24.         }

  25. }
复制代码

控制台打印:
  1. I am A
  2. I am B
复制代码


作者: kid1943    时间: 2014-10-6 10:13
kid1943 发表于 2014-10-6 10:09
一个接口可以继承另一个接口,一个普通类可以实现多个接口,而一个抽象类可以实现一个接口。
可以参考一下 ...

又试了一下楼主所说的接口多继承是正确的
代码:

  1. interface C{
  2.         void mC();
  3. }
  4. interface A {
  5.         void mA();
  6. }

  7. interface B extends A ,C{
  8.         void mB();

  9. }

  10. class Tmp implements B {

  11.         @Override
  12.         public void mA() {
  13.                 // TODO Auto-generated method stub
  14.                 System.out.println("I am A");
  15.         }

  16.         @Override
  17.         public void mB() {
  18.                 // TODO Auto-generated method stub
  19.                 System.out.println("I am B");
  20.         }

  21.         @Override
  22.         public void mC() {
  23.                 // TODO Auto-generated method stub
  24.                 System.out.println("I am C");
  25.         }

  26. }

  27. class Test {

  28.         public static void main(String args[]) {
  29.                 Tmp t = new Tmp();
  30.                 t.mA();
  31.                 t.mB();
  32.                 t.mC();

  33.         }

  34. }
复制代码

打印结果:
  1. I am A
  2. I am B
  3. I am C
复制代码

作者: 嘿~~    时间: 2014-10-6 14:19
白金角斗士 发表于 2014-10-3 20:33
哥们儿,是不是搞错了。

类与类之间才是继承关系,java里可以说支持多继承,但是仅仅在接口以多实现的方式 ...

接口继承接口,类实现接口,接口可以多继承,类也可以多实现接口
作者: wf111sxwf    时间: 2014-10-6 21:33
接口中本来就只有抽象方法、、、接口之间必须是继承啊。。。
作者: 暴风    时间: 2014-10-6 21:43
好像是啊!但是类不能多继承,类可以多实现接口
作者: SelonLiao    时间: 2014-10-12 09:42
一个类只能继承另一个类,一个接口可以继承多个接口,一个类可以实现多个接口
作者: new999    时间: 2014-10-12 10:01
确实是一个看过后会忘记的细节




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