The
JavaTutorial
AShortCourseontheBasicsFourthEdition
第7章包
创建包命名包使用包成员管理源文件和类文件小结
包
Java允许把多个类,接口收集在一起成为一组,称作包(package).通常把需要在一起
工作的类(互相访问)放入一个包.包在较大的范围内实现了OOP的封装机制,OOP为管理大量的类和接口提供了方便,也有利于这些类和接口的安全.Java编译器将包与文件
系统的目录一一对应起来.
包
使用包的主要原因是保证类名的唯一性.你和其他
程序员可以很容易地确定这些类型是相关的.可以允许包内的类型不受限制地相互访问,同时仍然严格限制从包外对这些类型的访问.
创建包
命名包packagepackageName;必须将package语句放在程序第一行.该语句后面的所有类都被当作包的成员.
命名包
包名称都使用小写字母,一般使用公司域名的反向顺序作为包名称的开头.例如:com.example.sun
包的目录结构
包名指出了属于该包的类应该存储的位置.例如:Math类属于java.lang包.那么Math类应该放在java目录的lang子目录里.
使用包成员
通常一个类只能引用与它在同一个包中的公共类.若需要引用其它包中的类,可以采用以下几种方法:
1.使用包名类名前缀java.util.Vectorvc=newjava.util.Vector();2.加载需要使用的类importjava.util.Vector;Vectorvc=newVector();3.加载整个包importjava.util.*;Vectorvc=newVector();
使用包成员(2)
按照惯例:Java编译器自动为每个源文件导入3个完整包:没有名称的包;java.lang包;当前包.
4.包没有层次结构导入java.awt.*;但是却没有导入java.awt.color.*;5.名称多义性如果两个包中都具有某个名称相同的类AClass,而且这两个包都被导入了,如果要使用AClass,就必须使用完整的名称.6.静态导入语句需要频繁使用静态字段和静态方法时,importstaticjava.lang.Math.*;doubler=cos(PI*x);
导入整个包会存在两个弊端:
导入整个包时,JVM会保存包中所有元素的名字,这必然会使用额外的RAM来存贮这些类和方法名.也许你并不会立即觉得有什么损失,因为你的机器可能有256M或更多的RAM空间,然而,如果256MRAM是基于Java的小型设备或使用J2ME的消费类电子产品,那么运行起来就会成为一个
问题,而且,这样做会使系统的性能有微小的降低.最大的弊端是涉及到Internet的带宽.当导入不在本地
计算机上的整个包时,Appletviewer或其他浏览器不得不等到把包中所有的类文件均从网上下载过来之后,才能继续工作.如果包中的30个类中只使用了其中2个,就会浪费大量的资源.
管理源文件和类文件
CLASSPATH设置,及其作用.对于初学者,IDE可以帮助classpath的管理.例子:PackageTest.java
JVM如何寻找类文件
练习
创建一个类,使其属于com.yourname包.编译并运行该类.通过IDE和命令行两种方式来实现.
小结
作为初学者,只需了解包的基本概念,了解CLASSPATH的作用,会借用IDE来管理,引入程序所需的相关包就可以了.