好贷网好贷款

包(package):程序库单元

发布时间:2016-12-3 6:20:39 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"包(package):程序库单元",主要涉及到包(package):程序库单元方面的内容,对于包(package):程序库单元感兴趣的同学可以参考一下。

当你使用关键字 import 来导入整个程序库时,如: import java.util.*; 这个包就变为可用的了。这将把作为标准的 Java 发布的一部分的整个 utility 程序库都引入 到程序中来。例如,java.util 中有一个叫作 ArrayList 的类,你现在既可以用全称 java.util.ArrayList 来指定(这样你就不必使用 import 语句了),也可以仅指定为 ArrayList(缘于 import)。 如果你想引入一个单一的类,你可以在 import 语句中命名该类 import java.util.ArrayList; 现在,你就可以不受任何限定而直接使用 ArrayList 了。但是,这样做 java.util 中的其 他类就都变为是不可用的了。 我们之所以要导入,就是要提供一个管理名字空间(name spaces)的机制。所有类成员 的名称都是彼此隔离的。A 类中的方法 f( )与 B 类中具有相同参数列表(argument list) 的方法 f( )不会彼此冲突。但是如果类名称相互冲突又该怎么办呢?假设你编写了一个 Stack 类并安装到了一台机器上,而该机器上已经有了一个别人编写的 Stack 类,我们该 如何解决?名字之间的潜在冲突使得在 java 中对名称空间进行完全控制,并能够不受 Internet 的限制创建唯一的名字就成为了非常重要的事情。 到目前为止,书中大多数示例都存于单一文件之中,并专为本机使用(local use)而设计, 因而尚未受到包名(package name)的干扰。(此时类名称被放于“缺省包”中)这当然 也是一种选择,而且出于简易性的考虑,在本书其它任何部分都尽可能地使用了此方法。不 过如果你正在准备编写能够与其他 java 程序在同一台机器上共存的 java 程序的话,你就 需要考虑如何防止类名称之间的冲突。 如果你编写一个 java 源代码文件,此文件通常被称为编译单元(compilation unit)(有时 也被称为转译单元(translation unit))。每个编译单元都必须有一个后缀名.java,而在 编译单元之中则可以有一个 public 类,该类的名称必须于文件的名称相同(包括大小写, 但不包括文件的后缀名.java)。每个编译单元只能有一个 public 类,否则编译器就不会 接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的, 这是因为它们不是 public 类,而且它们主要是被用于为主 public 类提供支持。 当你编译一个.java文件时,在.java文件中每个类都会有一个输出文件,而该输出文件的 名称与.java文件中每个类的名称又恰好相同,只是多了一个后缀名.class。因此,你在编 译少量.java文件之后,会得到大量的.class文件。如果你已经用编译型语言编写过程序, 那么对于编译器产生一个中间文件(通常是一个“obj”文件),然后再与通过链接器(linker, 用以创建一个可执行文件)或程序库产生器(librarian,用以创建一个程序库)产生的其 它同类文件捆绑在一起的情况,你可能早已习惯。但这并不是java的工作方式。一个java 可运行程序是一组可以打包并压缩为一个java 文档文件(JAR,用Java的 jar文档生成器) 的. class文件。Java解释器(interpreter)负责对这些文件的查找、装载和解释。1 程序库实际上是一组类文件。其中每个文件都有一个 public 类(并非强制的,但这很典型), 因此每个文件都是一个构件(component)。如果你希望这些构件(每一个都有它们自己 分离开的.java 和.class 文件)从属于同一个群组,就可以使用关键字 package。 当你在文件起始处写道:   package mypackage; 就表示你在声明该编译单元是名为 mypackage 的程序库的一部分(如果使用了一个 package 语句,就它必须是文件中除注释以外的第一句程序代码)。或者,换种说法,你 正在声明该编译单元中的 public 类名称是位于 mypackage 名称的遮蔽之下。任何想要 使用该名称的人都必须指定全名或是在与 mypackage 的结合中使用关键字 import(使 用前面给出的选择)。请注意,Java 包的命名规则全部使用小写字母,包括中间的字也是 如此。 例如,假设文件的名称是 MyClass.java,这就意味着在该文件中有且只有一个 public 类,该类的名称必须是 MyClass(注意大小写): package mypackage; public class MyClass { // . . . 现在,如果有人想用 MyClass 或者是 mypackage 中的任何其他 public 类,就必须使 用关键字 import 来使得 mypackage 中的名称可以被使用。另一个选择是给出完整的 名称: mypackage.MyClass m = new mypackage.MyClass(); 关键字 import 可使之更加简洁: import mypackage.*; // . . . MyClass m = new MyClass(); 身为一名程序库设计员,很有必要牢记 package 和 import 关键字允许你做的,是将单 一的全局名字空间分割开,使得无论多少人使用 Internet 并用 java 编写类,都不会出现 名称冲突问题。

上一篇:11g RAC中pfile和spfile的使用总结
下一篇:[读书笔记]C++语言的设计与演化[The Design and Evolution of C++]

相关文章

相关评论