包(package)
- 对类文件进行管理
- 给类提供多层命名空间
- 写在程序文件的第一行
- 包名通常可以用域名取反命名,以保证包名的唯一性,如com.baidu
- 类名的全称是 包名.类名
- 包也是一种封装形式
编译
javac -encoding UTF-8 -d 存放地址(.表示当前目录) 文件名
包之间的访问
- 被访问的包中的类权限必须是public的
- 类中的成员权限:public或者protected(保护)
- protected是为其他包中的子类提供的一种权限
权限
import关键字
导入包中的类
简化类名,创建其他包中的对象时,不用每次都去写包名
写法:import 包.包.类
如果包中的大部分类都需要使用,可以使用以下方法引入
写法:import 包.包.*
Jar包
Java的压缩包
作用
- 方便项目的携带
- 方便于使用,只要在classpath设置jar路径即可(如set classpath=d:aaa/mypack.jar;),给jvm提供一个环境变量
- 数据库驱动,SSH框架等都是以jar包体现的
jar包的操作
通过jar.exe工具对jar的操作。
- 创建jar包
jar -cvf mypack.jar packa packb
- 查看jar包
jar -tvf mypack.jar [>定向文件(如d:aaa.txt)]
- 解压缩
jar -xvf mypack.jar
- 自定义jar包的清单文件
jar –cvfm mypack.jar mf.txt packa packb
代码示例
目录结构
|--packa
|--PackA.class
|--packc
|--PackC.class
PackA.java
PackB.java
PackB.class
PackC.java
PackA.java
package packa;//包名,需要放在代码第一行
public class PackA{//需要用public修饰,放大权限,否则外部无法访问
protected void show(){//保护,其他包中的类无法访问,子类除外
System.out.println("hello package");
}
}
PackB.java
import packc.PackC;//引入包中的类
class PackB{
public static void main(String[] args) {
// packa.PackA a = new packa.PackA();//如果没有引入类,需要 包名.类名 来使用
// a.show();
PackC c = new PackC();//创建对象,需要带上包名
c.method();
}
}
PackC.java
package packc;
import packa.PackA;//引入包中的类
public class PackC extends PackA{//不同包中的类可以实现继承
public void method(){
System.out.println("method run");
show();//使用父类方法
}
}