java 包的定义与使用
包的定义与使用
在开发过程中,会定义很多类,为了避免相同类名称出现而发生覆盖的情况,把所有java程序保存在各自的目录里面,而该目录就是包。包的本质实际上就是一个文件夹。
一、包的定义
- java程序是由一个public类和众多非public的类组成,在java程序的第一行加入“package 包名称;”,就可以把*.class文件保存在相应的包内;当需要调用此包中的类时,用“包名称.类名称”的格式调用,这样可以避免相同类名的冲突。
注:在命名包名称时,尽量避开与系统冲突的名字,例如java.lang等;同时包名一般都采用小写形式。 - 一旦程序类中出现了包名称之后,在执行程序使用类名称时,应尽量带上包名称,而不是进入包内执行。
注:在以后进行项目开发中,所有.java文件一定要使用package定义包。
二、包的导入
- 因为包之间会存在相互调用的情况,一个包不但会调用本包中类,还会调用其他包中的类,所以需要用关键词“import”进行导入包中的类,格式:import 包名称.类名称;
- 当需要导入其他包中的若干类,如果一个一个的写比较麻烦,可以用格式:import 包名称.*;来完成导入。
注:使用通配符 “ * ” 并不意味着将包内的类全部导入,而是按照需求导入,需要什么类就导入什么类。 - 如果在不同的包中包含有相同名称的类名,可以采用“包名称.类名称”加以区分。
例如:
cn.aaa.www.Demo demo=new cn.bbb.www.Demo();
注:该句代码表示产生cn.bbb.www包内中Demo类的一个实例化对象,赋给cn.aaa.www包中的Demo类,对象引用为demo。
代码示例:
package cn.aaa.www;
public class Hello{
public void print() {
System.out.println('cn.aaa.www包内的Hello类!');
}
}
package cn.bbb;
import cn.aaa.www.Hello;//导入程序类
public class World{
public static void main(String[] args) {
Hello hello=new Hello();
hello.print();
}
}
运行结果
cn.aaa.www包内的Hello类!
三、系统常用包
java.lang :系统的常用基础类,例如String,Object类等。
java.lang.reflect
java.math
java.util
java.io :io编程的开发包。
java.applet
java.awt.javax.swing等等,可以查看文档。
注意:
包也限定了访问权限,只有具有访问权限的类才能访问某个包中的类。
No | 范围 | private | default | protected | public |
---|---|---|---|---|---|
1 | 同一个包中的同一个类 | √ | √ | √ | √ |
2 | 同一包中的不同类 | - | √ | √ | √ |
3 | 在不同包中的子类 | - | - | √ | √ |
4 | 在不同包中的非子类 | - | - | - | √ |
<基于访问权限问题,在开发过程中,一般属性都用private封装,方法的权限用public>
四、jar命令(开发中会大量使用)
jar相当于一种压缩文件,里面保存的是“*.class”文件。即生成了一个用package关键字打包的内容的压缩文件。
下图是jar命令中的参数及其含义:
使用jar命令的作用:
在一个java程序中会存在很多“*.class”文件,将其压缩可以节省空间;
压缩生成jar文件之后,在调用jar文件中文件夹中的类时,不能像标题“二、包的导入”那样直接导入了,需要配置CLASSPATH,设置jar的加载路径;
在实际的开发中,因为会用到第三方程序包,所以会用到jar文件,所以开发包必须在CLASSPATH中配置后才能使用。
<具体的配置与java开发环境配置CLASSPATH方法相同,不在这赘述。>
赞 (0)