當一個大型程序由數個不同的組別或人員開發共同開發時,用到相同的類名稱是很有可能的事。如果這種情況發生,還要確保程序可以正確運行,就必須通過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類成員的訪問控制權限: