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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java木 中级黑马   /  2014-5-22 22:45  /  814 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大家都来聊聊接口的使用场景吧,一直对接口都理解的不是很深刻

7 个回复

倒序浏览
我觉得,对于初学者而言(我是初学者),我们只需要知道什么是借口,接口中成员的特点,以及接口的一些简单用法,老师视频中的一些简单应用即可。
还有就是API中很多都是接口,它是为了增强程序的扩展。
至于接口的使用场景,目前来讲使用的还真的很少,现在是基础知识学习阶段。只需要把相关概念记得很清楚。
在今后的学习和开发中,我想我们会对接口,以及其他知识透彻的理解,掌握和应用。
回复 使用道具 举报
作为一个初学者的角度来讲,说白了 接口就是一个小工具,你用人家的工具了 就跟人家声明一下,借用过来
回复 使用道具 举报
本帖最后由 ID1003 于 2014-5-23 00:05 编辑

同学,你发这样的帖子,就这么一句话,总感觉你有一种灌水的意思,虽然是这么说,但是我还是给你介绍一下我所了解的接口吧。我想应该都知道,在学习初期可以把接口当做一种特殊的抽象类,因为他有的特征在抽象类中差不多都可以找出来,那么为什么还要单独出来一个接口呢,举个小例子来说明一下吧。
  1. interface English {
  2.         public abstract void speakEnglish();//说英语
  3. }

  4. //人类
  5. abstract class Person {
  6.         //成员变量
  7.         private String name;
  8.         private int age;
  9.         //构造方法
  10.         public Person(){}
  11.         public Person(String name, int age){
  12.                 this.name = name;
  13.                 this.age = age;
  14.         }
  15.         //set、get公共方法
  16.         public void setName(String name){
  17.                 this.name = name;
  18.         }
  19.         public String getName(){
  20.                 return name;
  21.         }
  22.         public void setAge(int age){
  23.                 this.age = age;
  24.         }
  25.         public int getAge(){
  26.                 return age;
  27.         }
  28.         //抽象方法
  29.         public abstract void eat();//吃饭
  30. }

  31. //运动员
  32. abstract class Player extends Person {
  33.         //构造方法
  34.         public Player(){}
  35.         public Player(String name, int age){
  36.                 super(name, age);
  37.         }
  38.         //抽象方法
  39.         public abstract void study();//学习
  40. }

  41. //教练
  42. abstract class Coacher extends Person {
  43.         //构造方法
  44.         public Coacher(){}
  45.         public Coacher(String name, int age){
  46.                 super(name, age);
  47.         }
  48.         //抽象方法
  49.         public abstract void teach();//讲课
  50. }

  51. //乒乓球运动员
  52. class PingPongPlayer extends Player implements English {
  53.         //构造方法
  54.         public PingPongPlayer(){}
  55.         public PingPongPlayer(String name, int age){
  56.                 super(name, age);
  57.         }

  58.         //重写 接口与抽象类中的所有抽象方法
  59.         public void speakEnglish(){//说英语
  60.                 System.out.println("乒乓球运动员说英语");
  61.         }
  62.         public void eat(){//吃饭
  63.                 System.out.println("乒乓球运动员吃饭");
  64.         }
  65.         public void study(){//学习
  66.                 System.out.println("乒乓球运动员学习");
  67.         }
  68. }

  69. //足球运动员
  70. class FootballPlayer extends Player {
  71.         //构造方法
  72.         public FootballPlayer(){}
  73.         public FootballPlayer(String name, int age){
  74.                 super(name, age);
  75.         }

  76.         //重写 接口与抽象类中的所有抽象方法
  77.                 public void eat(){//吃饭
  78.                 System.out.println("足球运动员吃饭");
  79.         }
  80.         public void study(){//学习
  81.                 System.out.println("足球运动员学习");
  82.         }
  83. }

  84. //乒乓球教练
  85. class PingPongCoacher extends Coacher implements English {
  86.         //构造方法
  87.         public PingPongCoacher(){}
  88.         public PingPongCoacher(String name, int age){
  89.                 super(name, age);
  90.         }

  91.         //重写 接口与抽象类中的所有抽象方法
  92.         public void speakEnglish(){//说英语
  93.                 System.out.println("乒乓球教练说英语");
  94.         }
  95.         public void eat(){//吃饭
  96.                 System.out.println("乒乓球教练吃饭");
  97.         }
  98.         public void teach(){//学习
  99.                 System.out.println("乒乓球教练教课");
  100.         }
  101. }

  102. //足球教练
  103. class FootballCoacher extends Coacher {
  104.         //构造方法
  105.         public FootballCoacher(){}
  106.         public FootballCoacher(String name, int age){
  107.                 super(name, age);
  108.         }

  109.         //重写 接口与抽象类中的所有抽象方法
  110.         public void eat(){//吃饭
  111.                 System.out.println("足球教练练吃饭");
  112.         }
  113.         public void teach(){//学习
  114.                 System.out.println("足球教练练教课");
  115.         }
  116. }

  117. //测试类
  118. class InterfaceTest
  119. {
  120.         public static void main(String[] args)
  121.         {
  122.                 PingPongPlayer ppp = new PingPongPlayer("王浩", 28);
  123.                 ppp.eat();
  124.                 ppp.study();
  125.                 ppp.speakEnglish();
  126.         }
  127. }
复制代码
从上面代码中可以看到,English()就是一个接口,需要有子类来实现它,但是并不是下面四个子类都需要实现,而只是其中的一部分需要它,所以就把它拿出来定义成了接口。说的最简单的话就是,当只有一部分的子类需要实现某种方法的时候,那么这个方法就可以定义成一个接口。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
借楼主的话题

简述下自己对接口的看法

我理解的接口就是一种规则。

在接触程序以前,我们就知道U盘 Usb鼠标。  他们都有一个接口。 只要电脑的接口和鼠标u盘的接口一样,
那么他们就可以插入,使用。 不禁联想当早年的鼠标键盘接口是那种圆形的, 能和这种接口的像匹配的电脑是越来越少了,(笔记本早已经木有了),为什么这个接口被慢慢遗忘在历史中,因为他定义的规则过时了,不够好,

还有我们使用的手机,早年若基亚的圆头充电,安卓的小方头,苹果的大方头,造成大家需要各种接口,这也是为什么后来有消息说国际组织正在准备统一这个接口。

接口就是这么一个规则。

就好像,父母给女儿相亲,只要有车有房,这个接口就合格拉,管你多大年纪,长什么样,哈哈开个玩笑。

接口就是一个规则。

我认为,开发一个项目。划分成若干个小功能,定义成接口,然后分成若干个小组,分别完成,
最后记性拼接。完成该项目,咦,怎么有点想组装电脑捏,,对,就是这个意思,电脑组装,零件都是有自己的接口的,只要符合接口就可以进行组装,最后就是对兼容性的调试什么的了。

好吧,该睡觉了。
苦逼的日子啊。


评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
java木 来自手机 中级黑马 2014-5-23 10:17:22
地板
ID1003 发表于 2014-5-23 00:02
同学,你发这样的帖子,就这么一句话,总感觉你有一种灌水的意思,虽然是这么说,但是我还是给你介绍一下我 ...

接口很多时候和抽象类用起来很像,但接口和抽象类在针对问题的时候有着本质的区别。类继承接口,是从属关系,是is a而,类实现接口是 like a。我可真不是灌水,我以前写代码什么能往主函数里仍,徐然学的是Java其实是用C语言的思想在写代码。只重习后,对接口好好的学了一把,越觉得接口的好处,觉得用好接口,用好多态,对能写出面向对象的代码是很有用处的。
回复 使用道具 举报
java木 来自手机 中级黑马 2014-5-23 10:22:13
7#
你很有才啊,竟然这样这样解释接口,右侧有房。不过的确是这个理
回复 使用道具 举报
多看看视频,多少的知道点吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马