
4.9 包

Java 要求文件名和类名相同,因此,如果将多个类放在一起,很可能出现文件名冲突的情况,这时Java 提供了一种解决该问题的方法,即使用包将类进行分组。下面将对Java 中的包进行详细介绍。
4.9.1 包的概念
包(package)是Java 提供的一种区别类的命名空间的机制,是类的组织方式,是一组相关类和接口(接口将在第6 章为大家详细介绍)的集合,它提供了访问权限和命名的管理机制。Java 中提供的包主要有以下3 种用途。
(1)将功能相近的类放在同一个包中,可以方便查找与使用。
(2)由于在不同包中可以存在同名类,因此使用包在一定程度上可以避免命名冲突。
(3)在Java 中,某些访问权限是以包为单位的。
4.9.2 创建包
创建包可以通过在类或接口的源文件中使用package 语句实现,package 语句的语法格式如下:

●包名:必选参数,用于指定包的名称,包的名称必须为合法的Java 标识符。当包中还有包时,可以使用 “包1.包2.….包n” 进行指定,其中,包1 为最外层的包,而包n 为最内层的包。
package 语句位于类或接口源文件的第一行。例如,定义一个类Round,将其放入com.mr 包中的具体代码如下:

学习笔记
在Java 中提供的包相当于系统中的文件夹。例如,如果将上面代码中的Round 类保存到C 盘根目录下,则它的实际路径应该为 “C:\com\mr\Round.java”。
4.9.3 使用包中的类
类可以访问其所在包中的所有类,还可以使用其他包中的所有public 类。访问其他包中的public 类可以有以下两种方法。
(1)使用长名引用包中的类。
使用长名引用包中的类比较简单,只需要在每个类名前面加上完整的包名即可。例如,创建Round 类(保存在com.mr 包中)的对象并实例化该对象的代码如下:

(2)使用import 语句引入包中的类。
由于采用使用长名引用包中的类的方法比较烦琐,因此Java 提供了import 语句来引入包中的类。import 语句的基本语法格式如下:

当存在多个包名时,各个包名之间使用“.”分隔,同时包名与类名之间也使用“.”分隔。
“*” 表示包中所有的类。
例如,引入com.mr 包中的Round 类的代码如下:

如果com.mr 包中包含多个类,则可以使用以下代码引入该包下的全部类:
