论坛首页 入门技术论坛

说说Java接口的通俗理解

浏览 3901 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-01-20  

今天在Chinajavaworld中看到一则对Java接口理解的讨论,理解观点比较经典,现把主要内容摘录下来:

 

 

接口就是给出一些没有内容的方法,到具体用的时候再由用的方法自己定义内容
要注意的是想用接口必须实现接口的所有方法 

 

举例,比如一台电脑:

主板上的PCI插槽就是现实中的接口
你可你把声卡,显卡,网卡都插在PCI插槽上,而不用担心那个插槽是专门插哪个的
原因是做主板的厂家和做各种卡的厂家都遵守了统一的规定
包括尺寸,排线等等
但是各种卡的内部结构是一样的么?答案必然是否定的!
我们来模拟一下:
interface PCI
{
  void start();
  void stop();
}
//这是接口,相当于主板上的PCI插槽

class NetworkCard implements PCI
{
  public void start()
  {
    System.out.println("Send...");
  }
  public void stop()
  {
    System.out.println("Network stop!");
  }
}
//网卡
class SoundCard implements PCI
{
  public void start()
  {
    System.out.println("Du du...");
  }
  public void stop()
  {
    System.out.println("Sound stop!");
  }
}
//声卡
class MainBoard
{
  public void usePCICard(PCI p)
  {
    p.start();
    p.stop();
  }
}
//主板调用接口的运行方法,也就是调用PCI的函数
public class Assembler
{
  public static void main(String[] args)
  {
    MainBoard mb=new MainBoard();
    NetworkCard nc=new NetworkCard();
    mb.usePCICard(nc);
    SoundCard sc=new SoundCard();
    mb.usePCICard(sc);
  }
}
//这是运行

 

在上面所举的例子中,我发现即使不定义借口,各个类给出方法体,产生各自的行为,也可以实现相应的功能。那么,接口的意义到底在于什么地方呢?

 

 

这是个不错的问题,即使不定义接口我们还是一样写代码,一样的做
可是企业级的开发可不是三两个人一天两天就能干完的
几百人月的项目出来了,一个小公司干不了,就要把软件拆开分到很多小公司做
那怎么能保证各个公司做的代码最后和到一起能像我们想得那样运行呢
这里接口就体现了巨大的作用!
我分给你的任务,我不管你内部具体怎么实现,只要你按着我给你定义好的接口写
到我要用的时候统一调用就不会出现众多人写的代码和不到一起去的情况
我这说的只是接口最浅显的用处,当然在编程中接口对于带代码的可重用性,安全性,
健壮性,可维护性等有着至关重要作用!
所以有了新名词——“面向接口的编程”。

 

更俗一点的说法——

接口就是只有定义没有实现的东东..要用的时候再来实现他.打个比方说就像是电脑后面的显示器接口一样,它只说了他能接上一个显示器.只有当接上显示器的时候它才能实现功能

   发表时间:2008-02-01  
是挺通俗的,可是不够清晰..
0 请登录后投票
   发表时间:2008-02-02  
那么无聊的解释也叫“比较经典”呀。
0 请登录后投票
   发表时间:2008-02-02  
OO 中, 接口 是 功能的集合.

所以在万物(对象)的现世(OO世界中),是不存在接口这个虚拟的东西,因为,它是总结出来的,它是抽象出来的.

无论, 我们的代码再怎么奇技淫巧, 那是代码, 那是编程实现.
0 请登录后投票
   发表时间:2008-02-02  
lggege 写道
OO 中, 接口 是 功能的集合.

所以在万物(对象)的现世(OO世界中),是不存在接口这个虚拟的东西,因为,它是总结出来的,它是抽象出来的.

无论, 我们的代码再怎么奇技淫巧, 那是代码, 那是编程实现.


所谓通俗理解,一个形象的比喻罢了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics