第一、 包(package)

一、包:
1,作用:
1.1 对类进行管理,
1.2 给类提供了多层名称空间。

记住:有了包以后,类名就是: 包名+类名。

2,包与包之间访问:
2.1 被访问的包中的类以及成员必须public修饰。
2.2 被访问的父类中的成员可以给其它包中的子类提供一个特有的权限protected

包与包之间访问,只有两种权限可以使用:public ,protected(该权限只能给不同包中的子类使用)
3,import关键字。
3.1 作用:简化类名书写。
3.2 如果不同包中有相同的类同时被导入,使用时必须明确包名。
3.3 建议导入一个包中多个类时,不用通配符,而是按照具体类名导入。
包的出现导致类的名称过长,书写不方便,可以通过指定关键字import解决
特殊情况一:
packa\packaa\DemoAA.class
\DemoA.classs
import packa.*;//明确使用的类所属的包是packa,不会导入packa中子包的类
特殊情况二:
不同包中有相同类的类名,使用该类时必须制定包名
packa\Demo.class
packb\Demo.class

一个程序文件中只有一个package,可以有多个imort,用来导包中的类,不导入包中包
import packa.Demo
import packb.Demo
new packa.Demo();
如果包中有相同的类同时被导入时,使用时必须明确包名
举例:这里写代码片 `import packa.DemoA;//import packa.*;

class PackageDemo
 {
 public static void main(String[] args)
 {
 // packa.DemoA d = new packa.DemoA();//
 DemoA d = new DemoA();
 d.show();// packfu.DemoFu d1 = new packfu.DemoFu();
 // d1.showFu();
 System.out.println(“Hello package!”);
 }
 }


`

二、包的应用中常见的错误
PackageDemo.java:25: 错误: 找不到符号
DemoA d = new DemoA();
^
符号: 类 DemoA
位置: 类 PackageDemo
PackageDemo.java:25: 错误: 找不到符号
DemoA d = new DemoA();
^
符号: 类 DemoA
位置: 类 PackageDemo
2 个错误

原因:类名写错。有了包的类,类名:包名.类名,这才是类的全名称。
解决:使用DemoA,必须写packa.DemoA

==============
PackageDemo.java:46: 错误: 程序包packa不存在
packa.DemoA d = new packa.DemoA();//
^
PackageDemo.java:46: 错误: 程序包packa不存在
packa.DemoA d = new packa.DemoA();//
^
2 个错误
原因;packa这个包没有找到,在当前目录下。
解决:应该告诉jvm这个程序包的位置。 set classpath。

===============
PackageDemo.java:55: 错误: DemoA在packa中不是公共的; 无法从外部程序包中对其进
访问
packa.DemoA d = new packa.DemoA();//
^
PackageDemo.java:55: 错误: DemoA在packa中不是公共的; 无法从外部程序包中对其进
访问
packa.DemoA d = new packa.DemoA();//
^
2 个错误
原因:DemoA这个类在packa包中权限不够。
解决:提升DemoA权限。提升到public。

==============
PackageDemo.java:71: 错误: show()在DemoA中不是公共的; 无法从外部程序包中对其进
访问
d.show();
^
1 个错误

原因:show方法的权限不够。
解决:show用public修饰。

总结:
包与包之间的类在访问时,被访问的类以及成员都必须public修饰。

注意:被public修饰的类或者接口,所属的java文件名必须和类或者接口名称一致。

第二、 jar包

将java程序封装成一个jar压缩包,可以直接配置到classpath路径下,通过查阅该jar包的api文档就可以使用jar包中的内容

好处:方便项目的携带

方便使用,只要在classpath设置jar路径即可
数据库驱动,SSH框架等都是以jar包体现的

jar包的操作

通过jar.exe工具对jar的操作
创建jar包
jar -cvf mapack.jar packa packb

查看jar包
jar -tvf mypack.jar

解压缩
jar -xvf mypack.jar