黑马程序员技术交流社区

标题: 关于接口的问题请教大神 [打印本页]

作者: 张雄    时间: 2016-3-16 17:19
标题: 关于接口的问题请教大神
一直搞不明白,既然接口设定完了在实现类中使用的时候还要重写方法,那我在实现类直接写方法不就好了吗?为什么还要实现接口?
作者: ameanboy    时间: 2016-3-16 18:05
本帖最后由 ameanboy 于 2016-3-17 23:00 编辑

这样你可以用一个接口的引用来指向所有实现了该接口的类并很方便的调用其中的功能。你可以把接口想象成一个标准,不规定怎么实现,只定死要实现什么效果。举个例子
  1. interface 可榨汁的{
  2.     public void 榨汁();
  3. }

  4. class 苹果 implements 可榨汁的{
  5.     public void 榨汁(){
  6.         System.out.println("苹果汁");
  7.     }
  8. }

  9. class 橘子 implements 可榨汁的{
  10.     public void 榨汁(){
  11.         System.out.println("橘子汁");
  12.     }
  13. }

  14. class 菠萝 implements 可榨汁的{
  15.     public void 榨汁(){
  16.         System.out.println("菠萝汁");
  17.     }
  18. }

  19. //于是,我就可以这样来调用:
  20. 可榨汁的[] s = new 可榨汁的[3];
  21. s[0] = new 苹果();
  22. s[1] = new 橘子();
  23. s[2] = new 菠萝();

  24. for(可榨汁的 f : s)
  25.     f.榨汁();
复制代码



作者: 张雄    时间: 2016-3-17 20:35
ameanboy 发表于 2016-3-16 18:05
这样你可以用一个接口的引用来指向所有实现了该接口的类并很方便的调用其中的功能。你可以把接口想象成一个 ...

表示好难看懂您写的东西。{:2_30:}
作者: youdang    时间: 2016-3-17 21:32
因为多态,我认为的。,
作者: 骓逝    时间: 2016-3-17 21:42
你可以把接口中理解为一种功能,如果你把这种功能写在一个类中那么通过这个类new出来的对象都具有这种功能,而实际上开发中有些类不应该具有这个功能
比如说Person这个类,会说英语是个功能把它定义为接口然后这个人实现这个接口,这个人就是会说英语的人,而没有实现这个接口的Person就不具有这个功能




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