- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 包和接口 包和接口是Java语言最具革新性的两个特点所在。包是Java类的容器,而接口则是类的方法。本章将对这两个方面的内容作具体介绍。 6.1 Java中的包 包(package)是类的容器,用来保存划分的类名空间。包以分层方式保存并被明确地引入新的类定义。本节将对Java中包的相关问题进行讨论。 6.1.1 包的创建 Java提供了把类名空间划分为更多易管理的块的机制,这种机制就是包。包既是命名机制也是可见度控制机制。我们可以在包内定义类,而且在包外的代码不能访问该类。这使得各个类之间有隐私,但不被外界所知。 创建一个包是很简单的:只要包含一个package命令作为一个Java源文件的第一句就可以了。该文件中定义的任何类将属于指定的包。package语句定义了一个存储类的名字空间。如果省略package 语句,类名被输入一个默认的没有名称的包(这是为什么在以前不用担心包的问题的原因)。尽管默认包对于短例程序很好用,但对于实际的应用程序是不适当的。多数情况,需要为自己的代码定义一个包。下面是package声明的一般形式: package pkg; 这里,pkg为包名。Java用文件系统目录来存储包。记住这种规则是很重要的,目录名称必须和包名严格匹配。多个文件可以包含相同package声明。package声明仅仅指定了文件中所定义的类属于哪一个包。它不拒绝其他文件的其他方法成为相同包的一部分。多数实际的包伸展到很多文件。我们可以创建包层次。为做到这点,只要将每个包名与它的上层包名用点号“.”分隔开就可以了。一个多级包的声明的通用形式如下: package pkg1[.pkg2[.pkg3]]; 包层次一定要在Java开发系统的文件系统中有所反映。 6.1.2 关于类路径 假设你在一个test包中创建了一个名为PackTest 的类。由于你的目录结构必须与包相匹配,创建一个名为test的目录并把PackTest.java装入该目录。然后,使test 成为当前目录并编译PackTest.java。这导致PackTest.class被存放在test目录下。当试图运行PackTest时,java 解释器报告一个与“不能发现PackTest类”相似的错误消息。这是因为该类现在被保存在test包中,不再能简单用PackTest来引用。必须通过列举包层次来引用该类。引用包层次时用点号将包名隔开。该类现在必须叫做test.PackTest。然而,如果你试图用test.PackTest,将仍然收到一个与“不能发现test/PackTest类”相似的出错消息。 仍然收到错误消息的原因隐藏在类路径变量中。记住,类路径设置顶层类层次。问题在于在当前工作目录下不存在test子目录,因为你此时是工作在test目录。在这个问题上你有两个选择:改变目录到上一级然后用java test.PackTest,或者在类路径环境变量增加开发类层次结构的顶层。然后就可以使用java test.PackTest了。例如,如果源代码在目录C:\myjava下,那么应设置类路径为: .;C:\myjava;C:\java\classes 6.1.3 一个简单的例子 详细分析并运行教材P156~157页使用包的例子。 6.1.4 访问保护 在前面的章节中已经学习了Java的访问控制机制和访问说明符。例如,我们已经知道一个类的private成员仅可以被该类的其他成员访问。包增加了访问控制的另一个维度。正如读者所看到的,Java提供很多级别的保护以使在类、子类和包中有完善的访问控制。 6.1.5 包的导入 包的存在是划分不同类的好的机制,了解为什么所有Java内部的类都存在包中是很简单的。在未命名的默认包中,不存在核心Java类;所有的标准类都存储在相同的包中。既然包中的类必须包含它们的包名才能完全有效,为每个想用的包写一个长的逗点分离的包路径名是枯燥的。因为这点,Java包含了import语句来引入特定的类甚至是整个包。一旦被引入,类可以被直呼其名的引用。import语句对于程序员是很方便的,而且在技术上并不需要编写完整的Java程序。如果你在程序中将要引用若干个类,那么用import 语句将会节省很多打字时间。 在Java源程序文件中,import语句紧接着package语句(如果package 语句存在),它存在于任何类定义之前。下面是import声明的一般形式 import pkg1[.pkg2].(classname|*); 这里,pkg1是顶层包名,pkg2是在外部包中的用逗点(.)隔离的下级包名。除非是文件系统的限制,不存在对于包
文档评论(0)