7.1、包的概述Java中的包机制也是封装的一种形式
包主要有以下3个方面的作用:
(1)包允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。
(2)防止命名冲突:Java中只有在不同包中的类才能重名。不同的程序员命名同名的类在所难免,有了包,类名就很容易进行管理。
比如:A定义了一个类Sort,封装在包A中,B定义了一个类Sort,封装在包B中。在使用时,为了区分A和B分别定义的Sort类,可以通过包名区分开,如A.Sort和B.Sort分别对应于A和B定义的Sort类。
(3)包允许在更广的范围内的保护类、数据和方法。根据访问规则,包外的代码有可能不能访问该类。
7.2、包的定义定义包的语法格式如下:
package 包名;
(1)package 是关键字
(2)包的声明必须是Java源文件中的第一条分注释性语句,而且一个源文件只能有一个包声明语句,设计的包需要与文件系统结构相对应。
(3)在命名包时,遵循以下编码规范:
①、一个唯一的包名前缀通常是全部小写的ASCII字母,并且是一个顶级域名com、edu、gov、net及org,通常使用组织的网络域名的逆序。例如,如果域名为javagroup.net,可以声明包围 “package net.javagroup.mypackage;”
②、包名的后续部分依不同机构各自内部的规范不同而不同。这类命名规范可能以特定目录名的组成来区分部门、项目、机器或注册名,
如 “package net.javagroup.reserch.powerproject;”
-->reserch(项目名)-->powerproject(部门名)
例如,下面的代码中,为Person类定义了包cn.kgc.pack1
package cn.kgc.pack1;
public class Person{
//省略类的内部代码
}
7.3、包的注意事项(1)同一个包中不能有同名的类文件
(2)同一个类文件中可以声明多个类,但是一个类文件中只能有一个public修饰的类,并且这个类名要和文件名一致。
(3)一般在一个类文件中只写一个类
7.4、包的使用创建Person类和PersonTest类:
(1)Person类:
//将Person类放入pack1包中 package cn.kgc.pack1; public class Person { //代码..... }(2)PersonTest类
//将PersonTest类放入pack2包中 package cn.kgc.pack2; import cn.kgc.pack1.Person; public class PersonTest { public static void main(String[] args) { //代码..... } }



