//仅作为学习笔记
一、包的用处
- 对类文件进行分类管理。
- 给类提供多层命名空间。
- 写在程序文件的第一行。
- 类名的全称的是 :包名.类名。
- 包也是一种封装形式。
- package cn.itstu;
- class PackageDemo
- {
- /*
- 用javac -d . PackageDemo.java 在当前目录下自动生成包的文件夹
- 【javac -d c:\ PackageDemo.java】在指定目录C盘下自动生成包的文件夹
- 注意:运行.class的文件时正确的类名是:java cn.itstu.PackageDemo
- */
- public static void main(String args[])
- {
- System.out.println("hello package!!");
- }
- }
- package cn.itstu;
- class PackageDemo
- {
- /*
- 用javac -d . PackageDemo.java 在当前目录下自动生成包的文件夹
- 【javac -d c:\ PackageDemo.java】在指定目录C盘下自动生成包的文件夹
- 注意:运行.class的文件时正确的类名是:java cn.itstu.PackageDemo
- */
- public static void main(String args[])
- {
- System.out.println("hello package!!");
- }
- }
二、包与包之间的访问
- package cn.itstu;
- class PackageDemo
- {
- /*
- 将源文件编译打包到C:\myclass 文件夹下
- */
- public static void main(String args[])
- {
- /* cmd输入命令
- 1.javac -d c:\myclass DemoA.java
- 2.set classpath=c:\myclass
- 3.javac -d c:\myclass PackageDemo.java
- 4.java cn.itstu.PackageDemo
- */
- packa.DemoA d=new packa.DemoA();
- d.show();
- //packb.DemoB b=new packb.DemoB();
- //b.method(); error 访问权限不够
- }
- }
- package packa;
- public class DemoA extends packb.DemoB //类的权限必须是public
- {
-
- public void show()//方法的权限也必须是public
- {
- System.out.println("demoa show run");
- method();
- }
-
- }
- package packa;
- public class DemoA extends packb.DemoB //类的权限必须是public
- {
- public void show()//方法的权限也必须是public
- {
- System.out.println("demoa show run");
- method();
- }
- }
- package packb;
- public class DemoB
- {
- /* public */ protected void method()
- {
- System.out.println("demob method run");
- }
- /*当method方法被public修饰,可以被其子类DemoA访问,
- 也可以被其他包的类访问,但是当method方法被protected
- 修饰,method方法只能被其子类访问。
- */
- }
结论:
- 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
- 不同包中的子类还可以直接访问父类中被protected权限修饰的成员。
- 包与包之间可以使用的权限只有两种,public protected。
public protected default private
同一类中 OK OK OK OK
同一包中 OK OK OK NO
子类 OK OK NO NO
其他类中 OK NO NO NO
- 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
- 不同包中的子类还可以直接访问父类中被protected权限修饰的成员。
- 包与包之间可以使用的权限只有两种,public protected。
三、导包 import
通过import我们可以简化类名的书写。
包名我们一般用url,因为url具有唯一性。如: package com.qq.demo;
导包:import com.qq.demo.*; //*是通配符,表示导入com.qq.demo包下的所有类,开发中推荐使用导入具体类名,需要哪个类导入哪个,可以节省内存开销,如:
import com.qq.demo.ClassA;
注意:我们导入两个包 import packa.*; import packb.*; 如果这两个包中有相同的类classA存在,我们在使用类的时候必须指明使用哪个包下的该类
如 :packa.ClassA a=new packa.ClassA();
packb.ClassA b=new packb.ClassA();
四、jar包
- Java的压缩包
- 方便项目的携带。
- 方便于使用,只要在classpath设置jar路径即可。
- 数据库驱动,SSH框架等都是以jar包体现的。
通过jar.exe工具对jar的操作。
• 创建jar包 jar -cvf mypack.jar packa packb
• 查看jar包 jar -tvf mypack.jar [>定向文件] 如:jar -tvf mypack.jar >c:\1.txt
• 解压缩 jar -xvf mypack.jar
• 自定义jar包的清单文件 jar –cvfm mypack.jar mf.txt packa packb
• 创建jar包 jar -cvf mypack.jar packa packb
• 查看jar包 jar -tvf mypack.jar [>定向文件] 如:jar -tvf mypack.jar >c:\1.txt
• 解压缩 jar -xvf mypack.jar
• 自定义jar包的清单文件 jar –cvfm mypack.jar mf.txt packa packb