接口学习

原创 2004年10月19日 17:22:00

接口一直是我一知半解的编程概念.
学习接口之前,有这么几个问题需要被提出来:
WHAT 什么是接口?
WHY 为什么要用接口?(接口有什么用?接口有什么优点?)
HOW 怎么使用接口?
WHEN,WHERE  什么时候,什么地方使用接口?
IF NOT 如果不使用接口,能否实现同样的设计,如果可以两个方案的区别又在什么地方

通过学习我了解到:
WHAT 什么是接口:
接口是一种只有声明没有实现的特殊类
接口是一种约定,实现接口的类性格严格按照期定义来实现接口的每个方面.
如果假设接口是一个定义好的钥匙孔,面实现这个接口的多个类假设是门锁,那么在执行就可以忽略我面对的是哪个锁,我只需要用同一把钥匙就可以开这一类的锁了.

接口是一个对象在对其它的对象进行调用时所知道的方法集合。
 一个对象可以有多个接口(实际上,接口是对象所有方法的一个子集)
 类型是对象的一个特定的接口。
 不同的对象可以具有相同的类型,而且一个对象可以具有多个不同的类型。
 一个对象仅能通过其接口才会被其它对象所了解。
 某种意义上,接口是以一种非常局限的方式,将“是一种…”表达为“一种支持该接口的…”。
 接口是实现插件化(pluggability)的关键


WHY 为什么要用接口?(接口有什么用?接口有什么优点?)
官方的说明是:
有了接口,可以将功能定义为一些紧密相关成员的小组,可以在不危害现有代码的情况下,开发接口的增强型实现,从而使兼容性总是最小化,也可以在任何时候开发附加接口和实现来添加新的功能.

 Client不必知道其使用对象的具体所属类。
 一个对象可以很容易地被(实现了相同接口的)的另一个对象所替换。
 对象间的连接不必硬绑定(hardwire)到一个具体类的对象上,因此增加了灵活性。
 松散藕合(loosens coupling)。
 增加了重用的可能性。
 提高了(对象)组合的机率,因为被包含对象可以是任何实现了一个指定接口的类。
 缺点:
 设计的复杂性略有增加
(译者注:接口表示“…像…”(LikeA)的关系,继承表示“…是…”(IsA)的关系,组合表示“…有…”(HasA)的关系。)

HOW 怎么使用接口?
1  :通过在模块文件中定义interface
interface interface1
    sub sub1(x as integer)
    end sub
    
    function function1(x as integer) as integer
    end function
end interface

2  :在需要实现该接口的类中使用implements引用该接口
     public class myclass1
         implements   interface1
         ....
     end class

WHEN,WHERE  什么时候,什么地方使用接口?


IF NOT 如果不使用接口,能否实现同样的设计,如果可以两个方案的区别又在什么地方

Android接口和框架学习

Android接口和框架学习缩写:HAL:HardwareAbstraction Layer,硬件抽象层CTS:CompatibilityTest Suite,兼容性测试套件 Android让你能够自...
  • LoongEmbedded
  • LoongEmbedded
  • 2017年01月10日 12:48
  • 3347

Http免费测试接口,小白学习必备

电商接口 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1 ps:商品ID这么获取:http://item....
  • JianFeng_Z
  • JianFeng_Z
  • 2017年04月05日 16:36
  • 537

Linux下的文字接口浏览器和文字接口下载器应用

一文字接口浏览器 1.功能 浏览网页和查阅本机下HTML文件   2.语法 links [options][URL] 选项与参数: -anonymous [0|1]:是否使用匿名登录的意...
  • chengqiuming
  • chengqiuming
  • 2017年04月12日 10:10
  • 143

Web前端学习日记1

博客,你好,从今天开始,我就会开始在你这里发表我的Web前端学习日记,请多多指教哦!       今天是从HTML基础学起,虽然说以前有上过类似的课程,但是还是学到了很多,最大的收益就是又掌握了很...
  • huangmeixiang502
  • huangmeixiang502
  • 2017年01月10日 21:56
  • 271

Java 8 函数式接口,Function,Consumer,Predicate 接口的学习

本篇博文非原创。转载自http://blog.csdn.net/pzxwhc/article/details/48314039 感谢大佬:Sauron1,东西十分详细,学习了~ 转载摘抄主...
  • m0_37590135
  • m0_37590135
  • 2018年01月03日 15:26
  • 36

COM学习笔记(一)

 Internet 的飞速发展,面向对象的思想很难适应这种分布式软件模型,于是组件化设计思想得到了迅速发展。复杂的应用程序被设计成小的,功能单一的组件模块,这些模块可以运行在同一台机器上,也可以在不同...
  • chang_chunhua
  • chang_chunhua
  • 2008年04月17日 17:30
  • 518

COM学习笔记(四):注册表、内存管理、GUID<->字符串

注册表中HKEY_CLASSES_ROOT分支的大多数子关键字是ProgID。ProgID指的是程序员给某个CLSID 指定的一个程序员易记的名称。 ProgID格式约定:.. COM库...
  • u010002704
  • u010002704
  • 2014年09月03日 16:46
  • 483

android驱动学习入门-android应用怎么调用驱动1

android应用怎么调用驱动的结构层次:   android应用         |         | 通过native实现         |   C/C++代码         |...
  • menghnhhuan
  • menghnhhuan
  • 2012年04月05日 15:25
  • 6139

.NET--接口设计

我们学习.net视频的时候,
  • u010540106
  • u010540106
  • 2014年04月27日 20:59
  • 1533

java接口测试学习计划

学习目标与内容1 Java编程基础1.1 Java语法、类、接口、继承的理解1.2 java.util包中数据结构和方法的熟练使用1.3 熟练使用eclipse IDE环境和快捷键2...
  • ganhongxia
  • ganhongxia
  • 2010年09月25日 11:48
  • 4688
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口学习
举报原因:
原因补充:

(最多只允许输入30个字)