




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 接口和包,接口是面向对象编程中的一个重要概念,在开发程序中,有些不相关的类但是有相同的行为(方法),接口就是来定义这种行为的。接口只提供方法,不定义方法的具体实现。一个类只能继承一个父类,但是接口却可以继承多个接口。,8.1 接口概念,在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。,8.1.1 为什么使用接口,两个类中的两
2、个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。 Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,直到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。接口的出现解决了这个问题。,8.1.2 Java中的接口,在Java程序设计语言中,接口是一个引用类型,与类相似,所以可以在程序中定义并使用一个接口类型的变量。在接口中只能有常量、方法签名。 接口没有构造方法,不能被实例化,只能被类实现或者被另外的接口继承,所以在接口
3、中声明方法时,不用编写方法体。接口中的方法签名后面没有花括号,以分号结尾。 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。,8.1.3 作为API的接口,作为API使用的接口还普遍使用在商业软件生产中。典型的一个软件公司会开发并销售包含有复杂方法的一个软件包,而另外一家公司在他们自己的软件产品中使用这些方法。,8.1.4 接口和多继承,接口有另外一个非常重要的作用。因为Java中不允许多继承,一个类只能继承自一个父类,因此有时这种单继承并不能反映现实世界的某些现象。例如,未来的某个时候,出现了一种超级汽车,可以在水、陆、空三种环境下行驶。但是它只能从最初的Cars类
4、继承,只继承了陆地行驶的方法,这时只能过单继承的方式不能满足创建此超级汽车的目的。因此它可以实现多个接口。这时,要想创建能水、陆、空都能行驶的汽车,除了从Cars类继承陆地行驶的方法之外,还可以实现带有水中行驶和空中行驶方法的接口,那么它就具有了水中行驶和空中行驶的方法。,8.1.5 Java接口与Java抽象类区别,Java接口和Java抽象类有太多相似的地方,又有太多特别的地方。 Java抽象类可以提供某些方法的部分实现,而Java接口不可以 。 一个抽象类的实现只能由这个抽象类的子类给出 ,一个类可以实现任意多个Java接口,从而这个类就有了多种类型。 Java接口是定义混合类型的理想工
5、具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。,8.2 定义接口,有时候,程序员需要自己定义要使用的接口或者用来分发的接口。定义接口与定义类很相似,包括接口的声明和接口体的实现。在接口体中,含有对接口所包含的所有的方法的方法声明。接口所含有的方法声明后面紧跟一个分号,而不是花括号,因为一个接口不提供对它里面所声明的方法的实现。在一个接口中声明的所有方法都隐含是public的,所以public修饰符可以被省略。,8.2.1 声明接口,接口属于引用类型,定义接口需要使用关键字interface。接口的名称要遵循Java标识符命名规则。语法格式如下。 修饰符 interfa
6、ce 接口名称 extends 父接口名称列表 / 接口体 ,8.2.2 接口体,接口体就是在接口声明后面的大括号括起来的部分。由两部分组成:常量声明和方法声明。其语法格式如下所示。 修饰符 interface 接口名称 extends 父接口名称列表 / 常量声明 public static final 常量名称; / 方法声明 public abstract 返回类型 方法签名; ,8.3 实现接口,接口的主要作用,是声明共同的常量或方法,用来为不同的类提供不同的实现,但这些类仍然可以保持同样的对外接口。接口可以被类实现,也可以被其他接口继承。,8.3.1 实现接口,声明一个实现接口的类,
7、需要在类的声明中使用implements短语。一个类可以实现多个接口,所以implements关键字后面要跟一个被类实现的接口列表,用逗号分开。如果有extends短语的话,implements短语跟在extends短语后面。语法格式如下。 修饰符 class 类名称implements 接口列表 / 类体 / 在类中,要实现所有接口中声明的方法 ,8.3.2 接口示例,为了让大家更容易理解,举个例子给大家。定义两个接口InterfaceA和InterfaceB,并在类InterfaceTest实现两个接口。,8.3.3 接口的继承,接口也是可以被接口继承的,关键字extends,和类的继承相
8、似。语法格式如下。 Interface Interface2 extends Interface1 ,8.3.4 实现多个接口时的常量和方法冲突问题,每个类只能实现单重继承,而实现接口时,则可以实现多个接口。这时就有可能出现常量或方法名冲突的情况。例如,一个类实现两个接口,两个接口中都声明了相同名称的常量或相同名称的方法,那么在实现这两个接口的类中,引用常量或实现方法时,就不明确是哪个接口中的。要解决这类冲突问题时,如果是常量冲突,则需要在类中使用全限定名(接口名称.常量名称)明确指定常量所属的接口。如果是方法冲突,则只需要实现一个方法就可以了。,8.4 包,“包”指的是一组提供访问保护和命名
9、空间管理的相关的类型。如何将类和接口封装到一个包中、如何使用包中的类是学习编程的一个重要步骤。,8.4.1 包的概念,为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。Java中的包一般均包含相关的类,例如,所有关于交通工具的类都可以放到名为Transportation的包中。 程序员可以使用package指明源文件中的类属于哪个具体的包。包语句的格式为: package pkg1pkg2pkg3;,8.4.2 创建包,要创建一个包,需要为包选择一个名称,并将一个package语句和包的名称放在每一个想要放到包中的源文件
10、的顶部。所有的包名都是小写。使用含有关键字package的语句来创建包。例如: package 包名称;,8.4.3 包命名惯例,包名使用小写字母,以避免与类名或接口名冲突。对公司来说,使用其颠倒的Internet域名来开始其包名。例如,命名为pany.region.package。不过在有的情况下,互联网的域名可能不是一个有效地包名。例如,如果域名包含一个连字符或其他特殊字符,如果包名以数字开头或者以其他用于Java名称开头时是非法的字符开头,那么这种情况就会发生。在这种情况下,建议的规则是添加下画线。,8.4.5 导入包,由于不同的包之间的类不可以直接相互使用,因此就必须要通过导入包的方式来解决。使用带有通配字符“*”的import语句导入一个特定包中包含的所有类型,例如。 import 包名.*; 通配符“*”代表该该包中所有的类型,但不括包含的子包。导入以后,就可以通过简单名引用包中的任何类或接口。“*”只被用于指定包中的所有类。它不能被用于匹配一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营养缺乏与甲状腺功能
- 企业培训年度总结课件
- 英语九年级全一册作文范文(21篇)
- 餐饮行业品牌营销与技术合作合同
- 车辆借用与代驾服务协议合同
- 车辆抵押贷款合同争议解决条款
- 餐饮废弃物处理与城市景观美化项目合同
- 草莓种子种植技术专利授权与销售合同
- 车库租赁与车位租赁合同模板
- 金融理财产品销售代理合同参考文本
- 高中拔尖创新人才培养模式的探索与实践研究
- 建筑工程危险源辨识与风险评价表2024版
- 道路维修施工安全措施
- 2025年中国操作系统市场调查研究报告
- 2025-2030中国高流量呼吸湿化治疗仪行业市场现状分析及竞争格局与投资发展研究报告
- 代谢性疾病的风险评估与健康管理
- 2025年氢溴酸行业市场需求分析报告及未来五至十年行业预测报告
- 药学技师考试题及答案
- 2025春季学期国开电大专科《管理学基础》期末纸质考试总题库
- 2025年浙江宁波华生国际家居广场有限公司招聘笔试参考题库含答案解析
- 自由搏击培训方案
评论
0/150
提交评论