Java中的包与访问控制

Java中使用包组织类。使用包可以方便的管理代码,使得各个代码文件具有层次性,就如同硬盘中文件夹的嵌套一样具有层次性。实际上,在一个Java包在硬盘上的表现形式就是一个文件夹。

包可以有效地管理类,可以确保类名的唯一性。例如创建了两个名字相同的类但是却具有不同的功能,那么在不重新命名的前提下,最好的方法就是创建一个包,将其中一个类放入相应的包中。为了确保包名的唯一性,SUN公司建议将公司域名的逆序形式作为包名。以我的soleilneon.com域名为例,逆序形式就是com.soleilneon,那么在硬盘上文件夹的形式就是com\soleilneon。需要注意的是,Windows中使用的是反斜杠“\”,而Linux中使用的是斜杠“/”。

Java中标准类库就分别位于多个包内,为了使用特定的类需要指明包的路径。例如:

java.util.Date today=new java.util.Date();

这当然是个低效率的做法,每个类都需要指明完整包路径是相当的繁琐的,因此可以使用import语句导入包或者类,这样导入之后就可以不用写包路径,只需要类名就可以了。例如:

import java.util.*;
Date today=new Date();

另外也可以导入特定的类而不需要整个包:

import java.util.Date;

另外需要注意的是,如果导入一个包中包含有一个子包,那么import语句是不会导入子包的。而且不能使用import java.*或者import java.*.*来导入以java为前缀的所有包。

如果在导入的包中含有相同名字的类的话就需要在使用的时候给出完整的包路径加上类名。

如果需要将类放入包中,就需要现在硬盘上创建好相应的文件夹,然后再源文件的开头,类定义之前放置包的名字。