包(package)是Java语言提供的一种区别类名字命名空间的机制,它是类的一种文件组织和管理方式、是一组功能相似或相关的类或接口的集合。Java package提供了访问权限和命名的管理机制,它是Java中很基础却又非常重要的一个概念。
1 把功能相似或相关的类或接口组织在同一个包中,方便类或接口的查找和使用。
2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是互不相同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3 包也限定了访问权限,拥有包访问权限的类才能访问包中的类。
在一个.java文件中可以写一个public类和多个非public类,如果要将这些类组织在一个包当中,则在.java文件中除注释以外的第一行使用关键字package即可实现。当需要调用此包中的类时,就可以使用关键字import进行导入。在定义包的时候,应该注意几点:
1 为了尽量使包名保持唯一性,包名通常采用小写、按倒写公司网址的形式进行定义。假如你公司的网址为www.superstar.com,则你可以将包名写为com.superstar。注意,这只是一种约定俗成,并不是非这样命名不可。
2 在命名包时,应该避免使用与jdk提供的包发生冲突的名字,如java.lang、java.util等。
在电脑桌面创建Java文件夹,其下放置有源文件HelloWorld.java和MyTest.java。 (1)HelloWorld.java中的内容为:
package com.superstar;
public class HelloWorld {
public void print() {
System.out.println("Hello, World!");
}
}
(2)MyTest.java中的内容为:
// 注意,import导入的一定是.class文件,而不是.java文件!
import com.superstar.HelloWorld;
public class MyTest {
public static void main(String[] args) {
HelloWorld h = new HelloWorld();
h.print();
}
}
在Java目录下创建存储包的文件夹,路径为“C:\Users\你的用户名\Desktop\Java\com\superstar”
一会儿咱们会将编译生成的HelloWorld.class存放在“C:\Users\你的用户名\Desktop\Java\com\superstar”路径下。
进入Java目录,编译源文件HelloWorld.java
这时,在“C:\Users\你的用户名\Desktop\Java\com\superstar”下就会生成HelloWorld.class
编译MyTest.java并运行,若打印出“Hello, World”,说明包被正确地创建和导入
[注] 在执行命令“javac -d ./ HelloWorld.java”之前,必须在“C:\Users\你的用户名\Desktop\Java”中先创建好包路径“C:\Users\你的用户名\Desktop\Java\com\superstar”,因为javac命令不会自动创建文件夹。