1、包
包是Java语言中有效地管理类的一个机制。
包名的目的是有效的区分名字相同的类。不同Java源文件中两个类名字相同时,它们可以通过隶属不同的包来相互区分。
2、包语句
通过关键字package声明包语句。
package语句作为Java源文件的第一条语句,为该源文件中声明的类指定包名。
package语句的一般格式为:
package 包名;
例如:
package sunrise;
package sun.com.cn;
3、有包名的类的存储目录
如果一个类有包名,那么就不能在任意位置存放它,否则虚拟机将无法加载这样的类。
程序如果使用了包语句,例如:package tom.jiafei;
那么存储文件的目录结构中必须包含有如下的结构
…\tom\jiafei
如:
c:\1000\tom\jiafei
并且要将源文件编译得到的类的字节码文件保存在目录c:\1000\tom\jiafei中(源文件可以任意存放)。
4、运行有包名的主类
如果主类的包名是tom.jiafei,那么主类的字节码一定存放在…\tom\jiefei目录中,运行时必须到tom\jiefei的上一层(即tom的父目录)目录中去运行主类。
假设tom\jiefei的上一层目录是1000,那么,必须如下格式来运行:
C:\1000\java tom.jiafei.主类名
PS:见示例。
5、import语句
一个类可能需要另一个类声明的对象作为自己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。
如果一个类想要使用的那个类和它不在一个包中,要使用import语句完成使命。
6、引入类库中的类
使用import语句可以引入包中的类。在编写源文件的时候,除了自己编写的类以外,经常需要使用Java提供的许多类,这些类可能在不同的包中。在学习Java语言时,使用已经存在的类,避免一切从头做起,这也是面向对象编程的一个重要方面。
为了能够使用Java提供给我们的类,可以使用import语句引入包中类。在一个Java源程序中可以有多个import语句,它们必须写在package语句(假如有package语句的话)和源文件中类的定义之间。Java为我们提供了大约130多个包,比如:
java.lang 包含所有的基本语言类
javax.swing 包含抽象窗口工具集中的图形、文本、窗口GUI类
java.io 包含所有的输入输出类
java.util 包含实用类
java.sql 包含操作数据库的类
java.nex 包含所有实现网络功能的类
java.applet 包含所有实现Java applet的类
7、引入自定义包中的类
用户程序可以使用tom.jiafei包中的类
如:import tom.jiafei.*;
使用非类库中有包名的类,也要使用import语句。
8、使用无包名的类
之前,我们在源文件中一直没有使用包语句,因此各个源文件得到的类都没有包名。如果一个源文件中的类想使用无名包中的类,只要将这个无包名的类的字节码和当前类保存在同一目录中即可。
9、避免类名混淆
1).区分无包名和有包名的类
如果一个源文件使用了一个无名包中的A类,同时又用import语句引入了某个有包名的同名的类,如tom.jiafei中的A类,就可能引起类名的混淆。
2).区分有包名的类
如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名 。
PS:见示例。
10、示例代码
src\com\blue\person\Bom.java
package com.blue.person;
public class Bom {
}
src\com\blue\person\Tom .java
package com.blue.person;
public class Tom {
}
src\com\blue\pic\Circle.java
package com.blue.pic;
public class Circle {
}
src\com\blue\pic\Ladder .java
package com.blue.pic;
public class Ladder {
}
src\com\blue\pic\Tom .java
package com.blue.pic;
public class Tom {
}
src\com\blue\Demo19.java
package com.blue;
import com.blue.person.Bom;
import com.blue.person.Tom;
import com.blue.pic.Circle;
public class Demo19 {
public static void main(String[] args) {
System.out.println("我的包名就是com.blue");
Bom bom = new Bom();
Circle circle = new Circle();
Tom tom = new Tom();
com.blue.pic.Tom tom2 = new com.blue.pic.Tom();
}}