Java语言中接口的定义及实现
作者:刘蕴于文新
来源:《价值工程》2012年第16
        摘要: Java中,除了使用抽象类来实现一定程度的抽象外,还可以定义一种特殊的抽象类:接口。本文主要讲述了接口的定义和接口的实现。
        关键词: Java;抽象类;接口;实现
        中图分类号:TP31文献标识码:A文章编号:1006-4311201216-0173-01
        0引言
        Java语言中为了使程序设计变得简单清晰,不允许类的多重继承,只允许单重继承,即一个类只能有一个直接父类。这虽然简化了程序的结构,但也丧失了编写程序的灵活性,减弱了面向对象程序设计的代码复用功能。因此需要引进其他的机制来帮助实现类似于类的多重继承的功能,这就是Java语言中的接口(interface)。
        接口是一种完全没有实现的类,在接口中只包含了抽象的方法和常量的定义。与类不同的是,接口的定义使用interface关键字,而类的定义使用class关键字。实际上,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,没有变量和方法的实现。即接口是一种概念性的模型,它有助于类层次结构的设计。某些代码设计的方法是首先设计所有的接口和类,然后再设计实现接口。这样会避免代码集成时出现的许多问题。以这种方式进行的设计通常更为通用而且更易于扩展。
        接口的用处主要体现在以下几个方面:
        ①可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。可以指明多个类需要实现的方法。零基础学java要多久可以理解对象的交互界面,而不需要了解对象所对应的类。
        1接口的定义
        接口的定义包括两个部分:声明部分和接口体。
        1.1 接口的声明接口用interface关键字来声明,接口声明的一般格式为:
        [修饰符]interface[extends]{
        接口体
        }
        其中
        修饰符:为接口的访问权限,有public和缺省两种状态。public表示任意类均可使用这个接口。缺省情况下,只有与该接口定义在同一包中的类才可以访问这个接口,而其他包中的类无权访问该接口。
        接口名:为Java中的合法标识符。
        父类接口列表:一个接口可以继承其它接口,可通过关键字extends来实现,其语法与类的继承相同。被继承的接口为父类接口,当有多个父类接口时,用逗号分隔开。子接口可以继承父接口的所有常量和方法。
        1.2 接口体接口体是包含在一对大括号中的部分,由常量定义和方法定义两个部分。
        1.2.1 常量定义常量定义的格式如下:
        [public][static][final]=
        其中
        public static final:接口中的常量只能被public static final修饰,即使没有在声明中显式修饰而使用系统默认也是一样,接口中的常量必须被赋予常量值,并且在继承这个接口的类也不能改变它的值。
        常量类型:可以是任何类型。
        常量名:为Java中的合法标识符,通常大写。
        1.2.2 方法定义方法定义的格式如下:
        [public][abstract]
        接口中只进行方法的声明,而不提供方法的实现。所以方法定义没有方法体,且用分号结尾。接口中的方法默认是由public abstract修饰的,因此不管是否有修饰符显式修饰接口中的方法都是公共的抽象方法。
        如果在子类接口中定义了和父类接口中同名的常量和相同的方法,则父类接口中的常量被隐藏,方法被重写。
        2方法的实现
        一个接口可以被一个或多个类实现。当一个类实现一个接口,它必须实现接口中所有的方法,用关键字implements实现接口。一个类还可以实现多个接口,各接口用逗号隔开,实现接口的语句格式如下:
        classimplements接口名1,接口名2……
        在类体中可以使用接口中定义的常量,由于接口中的方法为抽象方法,所以必须在类体中加入要实现接口方法的代码,如果一个接口是从别的一个或多个父接口中继承而来的,则在类体中必须加入实现该接口及其父接口中所有方法的代码。在实现接口时,类中对方法定义要和接口中的相应方法的定义相匹配,其方法名、方法返回值类型、方法的访问权限和参数的数目与类型等都要一致。
        3接口和抽象类的区别
        抽象类和接口在Java语言中都是用来进行抽象类定义的。在面向对象的概念中,所有的对象都是通过类来描述的,但并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征在对问题领域进行分析、设计中得出的抽象概念,是对一系列看一去不同,但是本质上相同的具体概念的抽象。
        抽象类和接口是不同的,具体区别如下:
        抽象类中可以定义成员变量和成员方法,其中可含有非抽象的成员方法。而接口中只能定义常量和没有实现的方法,方法完全是抽象的,只有声明,没有方法的具体实现。
        一个子类只能继承一个抽象类,但一个子类可以实现多个接口。
        抽象类和接口有相同的地方,二者都不能实例化。
        参考文献:
        [1]王洪香,郭潭玉.Java程序设计案例教程.北京交通大学出版社,2007.
        [2]沈大林.Java程序设计案例教程.中国铁道出版社,2007.
        [3]崔曙光,李春奇.Java程序设计案例教程.中国铁道出版社,2011.
        [4]王薇.Java程序设计与实践教程.清华大学出版社,2011.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。