Java语言中的接口


  前言

  一个类只有有一个直接的父类,但可以实现多个接口。采用这种方式,Java语言对多继承提供了有力的支持。

  1. 接口的概念和正确使用接口的语法

在Java语言中,接口有两种意思:

  • 一是指概念性的接口,即指系统对外提供的所有服务。类的所有能被外部使用者访问的方法构成了类的接口。
  • 二是指interface关键字定义的实实在在的接口,也称为接口类型。它用于明确地描述系统对外提供的所有服务,能够更加清晰地把系统的实现细节与接口分离。

接口对成员变量和方法做了许多限制,接口的特征归纳如下:


A.接口中的成员变量默认都是public、static、final类型的(就是公开的静态常量),必须被显示地初始化。


B.接口的方法默认的都是public、abstract类型的。


C.接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法。如果在接口中定义实例变量非抽象的实例方法及静态方法,这样是非法的。


D.接口没有构造方法,不能被实例化。在接口中定义构造方法是非法的。


E.一个接口不能实现另一个接口,但它可以继承多个接口。例如接口C继承了接口B和接口A,那么接口C会继承接口A中的所有方法,接口C会继承接口B中的所有方法。


F.接口必须通过类来实现它的抽象方法。类实现接口的关键字是implements。


G.与子类继承抽象父类相似,当类实现了某个接口时,它必须实现接口中所有的抽象方法,否则这个类必须定义为抽象类。


H.不允许创建接口的实现,但允许定义接口类型的引用变量,该变量引用该变量引用实现了这个接口的类的实例。


I.一个类只能继承一个直接的父类,但能实现多个接口。


2.接口和抽象类的比较


接口和抽象类都位于继承树的上层,它们具有共同点:

  • 代表系统的抽象层
  • 都不能被实例化
  • 都能包含抽象方法。这些抽象方法用于描述系统能提供哪些服务,但不必提供具体的实现。


抽象类和接口主要有两大区别:


  • 在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,这能提高代码的可重用性,这是抽象类的优势所在;而接口中只能包含抽象方法。
  • 一个类只能继承一个直接的父类,这个父类有可能是抽象类;但一个类可以实现多个接口,这是接口的优势所在。

接口和抽象类的使用场合:


  • 用接口作为系统与外界(即令一个系统)交互的窗口。
  • 由于外界使用者依赖系统的接口,并且系统内部会实现接口,因此接口本身必须十分稳定,接口一旦制定,就不允许随意修改,否则会对外界使用者及系统内部都造成影响。
  • 用抽象类来定制系统中的扩展点。可以把抽象类看作是介于“抽象”和“实现”之间的半成品,抽象类力所能及的完成了部分实现,但还有一些功能有待于它的子类去实现。

3.与接口相关的设计模式:


  • 定制服务模式
  • 适配器模式
  • 默认适配器模式
  • 代理模式
  • 标识类型模式
  • 常量接口模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值