为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
一、打包的意义
-
标准java库是由一系列包组成 包括 java.lang java.util java.net 等等
-
标准java包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
-
java 的包是为了更好地规划代码,防止命名冲突和混乱 所以java出现了打包机制
-
当把类组织起来放进一个包内之时 也就给包中的成员赋予了相互访问的权限,就拥有了该包内的程序代码
-
包访问权限把类聚集在一个包中这一做法提供了意义和理由
二、声明包
java 程序员都可以编写属于自己的 java 包,为保证包名唯一性,要求程序员在自己定义包的名字前加上唯一前缀
由于互联网上的域名称不会重复 所以推荐采用公司在互联网上的域名的倒置作为包的唯一前缀
三、使用包
一个类可以使用同一个包中的所有类 一个类可以使用其他包中的所有公开类
使用其他包中的公开类:
1.在每个类前加上完整包名,例如:
Java.util.Date today = new java.util.Date()
2.直接导包:使用import 语句来导包(eclipse 中 ctrl + shift +o)
import java.util.Date;
…
Date today = new Date();
3.可以import 特定类 也可以导入整个包
通过在源代码文件的顶部(在打包语句后)使用 import 语句来实现
import java.util.* ;
四、举例
工程下有两个包,
1.com.heavysea.learn
2.com.heavysea.use
包1.com.heavysea.learn下有:
Demo1.java
package com.heavysea.learn;
public class Demo1 {
public static void main(String[] args) {
Demo2 dm = new Demo2(); // 使用同一个包中的不同类
dm.age = 100;
dm.printData();
// 使用不同包中的类(也可直接导包)
com.heavysea.use.Demo2 dm2 = new com.heavysea.use.Demo2();
dm2.name = "hahhaaha";
dm2.printName();
}
}
Demo2.java
package com.heavysea.learn;
public class Demo2 {
int age;
void printData()
{
System.out.println("age="+age);
}
}
包2.com.heavysea.use 下有:
Demo2.java
package com.heavysea.use;
public class Demo2 {
public String name;
public void printName()
{
System.out.println("name="+name);
}
}