第5章 包和访问控制

现在我们已经知道Java程序是以类为编码单元的,在编译时每个类都会被单独编译为一个字节码文件(.class文件)。在一个大型软件系统中,可能会存在成千上万的类,为了便于管理数目众多的类,解决类命名冲突的问题,Java引入了包(package),图5-1展示了包的结构。

img

图5-1 包的结构

java是顶层包,其下有两个子包:io和lang,在lang子包中有两个类:System和String。这种组织结构有点像Windows的文件夹组织结构,文件夹层层嵌套,最后是文件。确实如此,Java包的组织结构和Windows的文件夹组织结构是类似的。

我们都知道,在同一个文件夹下是不能有同名的文件存在的,但是在不同的文件夹下则是可以的。同样的规则,在同一个包下,不允许有重名的类,但是在不同的包下,则是可以的。这就解决了软件系统中大量类可能重名的问题,毕竟人们都喜欢对一些常见的事物取相同的名字。此外,有了包和子包的层次嵌套关系,加上包和子包的名字,就可以更好地对软件系统进行模块化划分,实现分而治之,简化系统的复杂性。