您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>接口定义>

java接口的作用和意义是什么

2018年03月26日 17:32 网络整理 作者: 用户评论(0

  接口的定义

  接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。

  人类与电脑信息机器或人类与程序之间的接口称为用户界面。电脑等信息机器硬件组件间的接口叫硬件接口。电脑等信息机器软件组件间的接口叫软件接口。

  在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。这种交换可以发生在计算机软、硬件,外部设备或进行操作的人之间,也可以是它们的结合。

  

  接口的优势

  一、规范性

  接口就是规范,在整个系统设计中,涉及到很多层,为了使各个层之间调用透明话,你只需要知道接口,按照这个接口做你具体做的事情,就可以融合到整个系统中了。

  生活中的例子很多,例如:插头、插座,有标准的规范告诉你插头应该是几个脚,插座是几个孔等等,做插头、插座的公司就是根据这个规范来做插头、插座,而不需要做完一个插头就跑遍全世界去试用一下这个插头做的对不对。

  二、扩展性

  在项目开发过程中,由于客户的需求经常变化,如果不采用接口,那么我们必须不停改写现有的业务代码。改写代码可能产生新的BUG,而且改写代码还会影响到调用该业务的类,可能全都需要修改,影响系统本身的稳定性。到最后,可能会出现代码凌乱,不易读懂,

  后接手的人无法读懂代码,系统的维护工作越来越重,最终可能导致项目失败。

  三、接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,不需要改写现有代码,减少对系统的影响。从而让项目具有更大的扩展性。

  

  java接口的定义

  接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

  接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

  除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

  接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

  

  java接口的作用

  (1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

  (2)通过接口可以指明多个类需要实现的方法。

  (3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

  类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

  接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

  所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。

  从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。

  1、接口中定义类方法的原型,但是不能说是空方法,因为空方法的意思是有实现体,只不过实现体是空操作。实际上接口没有定义任何实现体。具体的实现体都是在实现接口的类中,接口只是定义了这些方法的调用方式。

  你当然也可以不用接口,直接在类里面写方法,但是如果你的一组方法需要在很多类里实现,那么把它们抽象出来,做成一个接口规范,不是更好么?

  2、一个类描述了一个实体,这个实体可能是一个复杂的对象,它的动作很多,如果把这些动作分类,用接口a定义其中的某一组动作,接口b定义其中的另外一组动作,这样的结构,比较清楚。

  这种方式具备了多继承的优点,避免了多继承的缺陷。实际上在历史上,接口在很大程度上,是为了解决多继承带来的种种问题而设计出来的。

  3、包中那些已定义的接口,怎么知道那里面定义了什么方法。

  接口里定义了方法的输入输出,这些都是协议,具体的实现都在每个类中。对于很多只需要抽象接口的地方,不需要知道具体的类是什么,只要这个类实现了这个接口就可以了。

  

  java接口的意义

  接口会出现,最关键的原因应该是Java中向上转型的出现,因为向上转型,子类中一些父类中不存在的方法(或者说不共用的方法)便不能继续调用了。这样就很麻烦,我们需要子类中的方法,但是这下该怎么办呢?

  第一种在父类中加子类的方法。但是,这个方法在父类中其实真的没有必要,方法函数体都不需要。所以会用抽象方法,这样就有了抽象方法的诞生。可是就算这样了,问题还是没有解决,因为真的太麻烦了,如果有其他的子类要继承父类,也难免会有向上转型的时候,那么,这个时候难道要一直往父类中加抽象方法么?显然不合理!

  于是就有了第二种方法,接口便诞生了,这也解释了为什么接口中都是抽象的方法!所以有了接口,子类中需要的方法,但是父类中没有的方法可以直接用接口来完成,也就不用再修改父类的方法,在多人合作完成一项工程的时候也更加的方便。

  

  java接口的使用

  两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。

  问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,直到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。

  可插入性

  在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。

  我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。

  接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。

  类型

  使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。

  在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。

  等级结构

  Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。

  如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。

非常好我支持^.^

(419) 97.2%

不好我反对

(12) 2.8%

( 发表人:陈翠 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!