Java包管理
2019-11-15 本文已影响0人
天凉玩个锤子
package
包的作用
- 如同文件夹,用于区别类名的命名空间
- 包可以避免名字冲突。调用不同包中相同类名的类时,应该加上包名加以区别。
- 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
//路径为:pkg1/pkg2/.../demo.java
package pkg1[.pkg2[.pkg3...]]];
如下例:
将想要放在同一个包中的文件都在开头写想要指定的包名bag(小写字母,避免与类、接口名字冲突),然后放入同一个子目录中,子目录的名字就是bag。
//A.java
package bag;
interface A{
public void a();
}
//A_.java
package bag;
public class thing implements A{
public void a(){
System.out.println("hahaha");
}
}
import 关键字
类文件中可以包含任意数量的 import 声明。import 声明必须在包声明之后,类声明之前。
如果一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略,否则:
//通配符*
import pkg.*;
//引入单个类A
import pkg.A;
命名规则
通常,一个公司使用它互联网域名的颠倒形式来作为它的包名.例如:互联网域名是 runoob.com,所有的包名都以 com.runoob 开头。包名中的每一个部分对应一个子目录。
例如:有一个 com.runoob.test 的包,这个包包含一个叫做 Runoob.java 的源文件,那么相应的,应该有如下面的一连串子目录:
....\com\runoob\test\Runoob.java
编译的时候,编译器为包中定义的每个类、接口等类型各创建一个不同的输出文件,输出文件的名字就是这个类型的名字,并加上 .class 作为扩展后缀。例如:
// 文件名: Runoob.java
package com.runoob.test;
public class Runoob {
}
class Google {
}
现在,我们用-d选项来编译这个文件,如下:
$javac -d . Runoob.java
这样会像下面这样放置编译了的文件:
.\com\runoob\test\Runoob.class
.\com\runoob\test\Google.class
这样,你可以将你的类目录分享给其他的编程人员,而不用透露自己的源码。
CLASSPATH
类目录的绝对路径叫做 class path。设置在系统变量 CLASSPATH中。编译器和 java 虚拟机通过将 package 名字加到 class path 后来构造 .class 文件的路径。
用下面的命令显示当前的CLASSPATH变量:
- Windows 平台(DOS 命令行下):C:> set CLASSPATH
- UNIX 平台(Bourne shell 下):# echo $CLASSPATH
删除当前CLASSPATH变量内容:
- Windows 平台(DOS 命令行下):C:> set CLASSPATH=
- UNIX 平台(Bourne shell 下):# unset CLASSPATH; export CLASSPATH
设置CLASSPATH变量:
- Windows 平台(DOS 命令行下): C:> set CLASSPATH=C:\users\jack\java\classes
- UNIX 平台(Bourne shell 下):# CLASSPATH=/home/jack/java/classes; export CLASSPATH