欢迎来到天天文库
浏览记录
ID:46944558
大小:692.50 KB
页数:96页
时间:2019-11-30
《java程序设计教程第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章接口、内部类和包5.1接口5.2内部类5.3包5.4JavaAPI基础本章小结习题5.1接口Java支持单重继承机制,不支持多重继承,即一个类只能有一个超类。单继承机制使得Java结构简单,层次清楚,易于管理,但在实际应用中也需要使用多重继承功能。为了实现像C++中的多继承性,Java中引入了接口概念,接口和单重继承相结合很好地实现了多重继承的功能。接口和类非常相似,接口用于定义几个类具有的但又不在这些类中定义的功能,通过在接口中设置这些方法,描述出共同的特性,然后由类本身定义如何实现。5.1.1接口定义接口是由常量和抽象方法组成的特殊
2、类。接口定义由关键字interface引导,分为接口的声明和接口体。其中,interface声明接口名,在接口体中定义常量和方法。在接口体中只进行方法的声明,不能进行方法的实现。具体定义语法如下:[public]interface接口名[extends父接口名列表]{[public][static][final]域类型域名=常量值;∥常量域声明[public][abstract][native]返回值方法名(参数列表)[throw异常列表];∥抽象方法声明}有关接口的定义要注意以下几点:(1) interface是声明接口的关键字,可以把它看
3、成一个特殊的类。(2)声明接口可给出访问控制符,用public修饰的是公共接口,可以被所有的类和接口使用。若接口声明为public,则接口中的方法和变量也全部为public。如果是默认修饰符的接口,则只能被同一个包中的其他类和接口使用。(3)接口名要求符合Java标识符的规定。(4)接口也具有继承性,定义一个接口时,可以通过extends关键字声明该接口是某个已经存在的父接口的派生接口,它将继承父接口的所有属性和方法。一个接口还可以继承多个父接口,父接口间用逗号分隔。(5)系统默认接口中所有属性的修饰都是publicstaticfinal。(
4、6)系统默认接口中所有方法的修饰都是publicabstract。(7)在接口中对抽象方法声明时,只能给出这些抽象方法的方法名、返回值和参数列表,而不能定义方法体,即这些接口仅仅是规定了一组信息交换、传输和处理的“接口”。 以下是接口定义的一个示例,声明了一个接口Student_info,表示学生情况,其中有一个数据成员year,两个成员方法age和output。定义在接口中的变量全部隐含为final和static,因此成员变量year必须设置初值。接口在语句构成上与类相似,但是其中只有方法的声明,没有方法的实现。【示例5-1】Stude
5、nt_info.java。publicinterfaceStudent_info{intyear=2008;intage();voidoutput();}5.1.2实现接口接口是抽象类的一种,不能直接用于创建对象。接口的作用在于规定了一些功能框架。接口的定义仅仅是实现某一特定功能的一组功能的对外接口和规范,具体功能的实现则由遵守该接口约束的类去完成,即由这些类来具体定义接口中各种抽象方法的方法体。因而在Java中,通常把对接口功能的“继承”称为“实现”。一旦一个接口被定义,一个或多个类就可以实现该接口。用关键字implements声明一个类将
6、实现一个接口。其声明格式如下:[<修饰符>]class<类名>[extends<超类名>][implements<接口名1>,<接口名2>,…]其中,<修饰符>可以是public,也可以省略。有关接口的实现,应该注意以下问题:(1)一个类可以实现多个接口,用逗号分隔接口列表。(2)如果实现某接口的类不是abstract的抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表。(3)如果实现某接口的类是abstract的抽象类,则它可以不实现该
7、接口所有的方法。但是对于这个抽象类的任何一个非抽象的子类而言,它们的父类所实现的接口中的所有抽象方法都必须有实在的方法体。这些方法体可以来自抽象的父类,也可以来自子类自身,但是不允许存在未被实现的接口方法。这主要体现了非抽象类中不能存在抽象方法的原则。(4)接口的抽象方法的访问限制符都已指定为public,一个类在实现一个接口时,必须实现接口中的所有方法,并且方法必须声明为public。下面是一个类实现接口的示例,声明的类Student实现接口Student_info,其中Student类中有自己的三个成员变量name、sex和birth_y
8、ear,实现接口方法age时使用了接口中的变量year值。【示例5-2】Student.java。publicclassStudentimplementsStude
此文档下载收益归作者所有