码迷,mamicode.com
首页 > 编程语言 > 详细

Java之接口

时间:2015-05-30 12:00:24      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

概述

  • 接口向使用者承诺系统能提供哪些服务,同时也制定了系统必须实现哪些服务
  • 类的继承使开发人员可以处理同类的事物,但不能处理不同类却具有相同功能的事物,接口实现了这一点。
  • 接口仅描述类具有什么功能,而不给出具体实现。
  • 接口本身必须非常稳定,Java接口一旦制定,就不允许更改,否则会对外面使用者及系统本身造成影响

 

接口的定义

<访问限制修饰符> [abstract]  interface  <接口名>

{

  //方法与成员变量的声明

}

注意:这些都是默认的,Java语言规范不建议写这些多余的关键字。

  1. 接口一定是抽象的,所以[abstract]可写可不写,如果不写编译时会自动加上
  2. 接口中只能包含public,static,final类型的成员变量,但必须被显示初始化,即接口中的成员变量为常量
  3. 接口中只能包含public,abstract类型的成员方法

 

接口的实现

calss <类名> implements <接口名列表>

 

  • 接口可以继承(接口只能继承接口,可以多继承)。
  • 一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承。

 

接口与抽象类对比 

相同点

  1. 抽象类与接口都位于继承树的上层
  2. 都不能被实例化
  3. 都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不提供具体的实现

 

不同点

  1. 在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们(限制了多继承),而接口中只能包含抽象方法。由于在抽象类中允许加入具体方法,因此扩展抽象类的功能,即向抽象类中添加具体方法,不会对它的子类造成影响,而对于接口,一旦接口被公布,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到所有的实现类,这些实现类要么实现新增的抽象方法,要么声明为抽象类
  2. 接口可以多继承,抽象类不可以。Java虚拟机采用不同的绑定规则,假如还允许一个类有多个直接的父类,那么会使绑定规则更加复杂,因此,为了简化系统结构设计和动态绑定机制,Java语言禁止多重继承.而接口中只有抽象方法,没有实例变量和静态方法,只有接口的实现类才会实现接口的抽象方法,因此,一个类即使有多个接口,也不会增加Java虚拟机进行动态绑定的复杂度.因为Java虚拟机永远不会把方法与接口绑定,而只会把方法与它的实现类绑定。

Java之接口

标签:

原文地址:http://www.cnblogs.com/hua2015/p/4539936.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!