Java包(package):Java系統包和自定義包

2020-07-16 10:05:09
在編寫 Java 程式時,隨著程式架構越來越大,類的個數也越來越多,這時就會發現管理程式中維護類名稱也是一件很麻煩的事,尤其是一些同名問題的發生。有時,開發人員還可能需要將處理同一方面的問題的類放在同一個目錄下,以便於管理。Java 為了解決上述問題,提供了包機制。

系統包

包允許將類組合成較小的單元(類似資料夾),它基本上隱藏了類,並避免了名稱上的衝突。包允許在更廣泛的範圍內保護類、資料和方法,可以在包內定義類,而在包外的程式碼不能存取該類。

包的 3 個作用如下:
  1. 區分相同名稱的類。
  2. 能夠較好地管理大量的類。
  3. 控制存取範圍。

在 Java 語言中,開發人員可以自定義包,也可以使用系統包,常用的系統包如表 1 所示。

表1 Java中常用的系統包
說明
java.lang Java 的核心類庫,包含執行 Java 程式必不可少的系統類,如基本資料型別、基本數學函數、
字串處理、例外處理和執行緒類等,系統預設載入這個包
java.io Java 語言的標準輸入/輸出類庫,如基本輸入/輸出流、檔案輸入/輸出、過濾輸入/輸出流等
java.util 包含如處理時間的 Date 類,處理動態陣列的 Vector 類,以及 Stack 和 HashTable 類
java.awt 構建圖形化使用者介面(GUI)的類庫,低階繪圖操作 Graphics 類、圖形介面元件和布局管理
(如 Checkbox 類、Container 類、LayoutManger 介面等),以及使用者介面互動控制和事
件響應(如 Event 類)
java.awt.image 處理和操縱來自網上的圖片的 Java 工具類庫
java.wat.peer 很少在程式中直接用到,使得同一個 Java 程式在不同的軟硬體平台上執行
java.net 實現網路功能的類庫有 Socket 類、ServerSocket 類
java.lang.reflect 提供用於反射物件的工具
java.util.zip 實現檔案壓縮功能
java.awt.datatransfer 處理資料傳輸的工具類,包括剪貼簿、字串傳送器等
java.sql 實現 JDBC 的類庫
java.rmi 提供遠端連線與載入的支援
java. security 提供安全性方面的有關支援

自定義包

Java 的系統包無須定義可以直接呼叫,當然也可以自定義包。下面來介紹自定義包的宣告和使用方法。

1. 包的宣告

為了宣告一個包,首先必須建立一個相應的目錄結構,子目錄與包名一致,然後在需要放入該包的類檔案開頭宣告包,形式如下:
package 包名;
不同程式檔案內的類也可以同屬於一個包,只要在這些程式檔案前都加上同一個包的說明即可。

2. 包的使用

在 Java 中,為了裝載使用已經編譯好的包,通常可以使用以下三種方法。

1)在要參照的類名前帶上包名作為修飾符。程式碼如下:
example.Test test = new example.Test();
其中,example 是包名,Test 是包中的類名,test 是類的物件。

2)在檔案開頭使用 import 參照包中的類。程式碼如下:
import example.Test;

3)在檔案前使用 import 參照整個包。如下程式碼將 example 整個包引入:
import example.*;
在使用包時,可以用點(.)表示包所在的層次結構,用“.*”表示該目錄下的所有內容。

提示:使用包時需要注意系統 classpath 路徑的設定情況,它需要將包名對應目錄的父目錄包含在 classpath 路徑中,否則編譯時會出錯,提示使用者編譯器找不到指定的類。