当一个大型程序由数个不同的组别或人员开发共同开发时,用到相同的类名称是很有可能的事。如果这种情况发生,还要确保程序可以正确运行,就必须通过package关键字来帮忙了。package是在使用多个类或接口时,为了避免名称重复而采用的一种措施。那么具体应该怎么使用呢?在类或接口的最上面一行加上package的声明就可以了。
package的声明格式:package package名称;
经过package的声明之后,在同一文件内的接口或类都被纳入相同的package中。程序TestPackage1是使用package的一个范例,如下所示:
package demo.java; class Person { public String talk() { return "Person---->>talk()"; } } class TestPackage1 { public static void main(String args[]) { System.out.println(new Person().talk()); } }
第1行声明了一个demo.java的包,所以就相当于将Person类、TestPackage1类放入了demo.java文件夹之下。现在来看一下上面的程序是如何编译的:
javac -d . TestPackage1.java 注:“-d” 表示生成目录;“.” 表示在当前目录下生成
这样就会在当前目录下生成一个demo的文件夹,在demo文件夹下又会生成一个java文件夹,在此文件夹下会有编译好的Person.class和TestPackage1.class,编译好之后用下面的语法来执行它:
java demo.java.TestPackage1
如果要使用不同包中的类,可以像上面“demo.java.TestPackage1”一样,指明包名加类名,或者可以使用import命令。import可以将某个包中的类或者整个包导入,因此之后使用此包中的类时就不再需要加上包名。注意,某个包中的类要能被访问,必须设置为public。
以下列出JDK中常见的包:
- java.lang — 包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。在java.lang包中还有一个子包:java.lang.reflect用于实现java类的反射机制。
- java.awt — 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
- javax.swing — 此包用于建立图形用户界面,此包中的组件相对于java.awt包而言是轻量级组件。
- java.applet — 包含applet运行所需的一些类。
- java.net — 包含执行与网络相关的操作的类。
- java.io — 包含能提供多种输入/输出功能的类。
- java.util — 包含一些实用工具类,如定义系统特性、与日期日历相关的函数。
以下列出Java类成员的访问控制权限: