package
- package pkg1[.pkg2[,pkg3…]];
- 包及子包的定义,实际上是为了解决名字空间、名字冲突的问题
- 与类的继承没有关系。事实上,一个子类与其父类可以位于不同的包中。
- 包有两方面的含义
- 一是名字空间,存储路径(文件夹);
- 二是可访问性(同一个包中的各个类,默认情况下可相互访问)一个类若没有显示的注明权限修饰词,则默认为包访问权限。
package语句
- Java文件至多只能写一个package语句
- 包层次的根目录是有环境变量CLASSPATH来确定的
- 在简单情况下,没有package语句,此时称为无名包(unnamed package)
- 在Eclipse中,也叫(default package), 即当前文件位于CLASSPATH所指向的根目录。
- Java的JDK提供了很多包
- java.applet, java.awt, java.awt.image, java.awt.peer, java.io, java.lang, java.net, java.util, javax.swing 等。
import语句
- 为了能使用Java中已提供的类,需要使用
import
语句来导入所需要的类。 - import格式为:
import package1[.package2...].(classname|*);
例如
import java.util.Date;
- 这样在程序中
java.util.Date;
可以简写成Date
,方便书写
- 这样在程序中
import java.awt.*;
import java.awt.event.*;
- 【注意】使用
(*)
只能表示本层次的所有类,不包括子层次下的类。
- 【注意】使用
- Java编译器自动导入包
java.lang.*
编译和运行包中的类
- 使用
javac
可以将.class文件放入相应的目录,只需要使用一个命令选项-d
来指明包的根目录即可。 javac -d d:\MyDesktop d:\Mydesktop\tempJava\HelloWrold.java
javac -d . d:\Mydesktop\tempJava\HelloWrold.java
, 其中”.”表示当前目录- 运行改程序,需要指明含有main的类名:
java tempJava.HelloWrold
CLASSPATH
在编译和运行程序中,经常要用到多个包,怎么指明这些包的根目录呢?简单的说,包层次的根目录是有环境变量CLASSPATH来确定的。三种方法实现
一是在
java
及javac
命令行中,用-classpath(or -cp)
选项来指明, 如:
-java -classpath d:\MyDesktop\tempJava;c:\java\classes;.
二是设定classpath环境变量,用命令设定环境变量,如:
set classpath = d:\MyDesktop\tempJava;c:\java\classes;.
- 三是在windows中设置系统的环境变量