為了更好組織類別,Java 提供套件機制區隔命名空間,作用:
package pkg1[.pkg2[.pkg3...]];
package net.java.util;
public class Something { ... }
檔案路徑應為:net/java/util/Something.java
package,每檔僅一個宣告// Animal.java
package animals;
interface Animal { void eat(); void travel(); }
// MammalInt.java
package animals;
public class MammalInt implements Animal {
public void eat() { System.out.println("Mammal eats"); }
public void travel() { System.out.println("Mammal travels"); }
public static void main(String[] args) {
MammalInt m = new MammalInt(); m.eat(); m.travel();
}
}
$ mkdir animals $ cp Animal.class MammalInt.class animals $ java animals/MammalInt Mammal eats Mammal travels
使用套件成員需明確匯入,語法:
import package1[.package2...].(classname|*);
package 宣告之後、類別定義之前payroll.Employeeimport payroll.*;import payroll.Employee;// Car.java
package vehicle;
public class Car { ... }
目錄:....\vehicle\Car.java (Windows) 類別名:vehicle.Car
使用反轉網域名稱作為套件前綴:com.runoob.test 對應目錄 ....\com\runoob\test\。
$ javac -d . Runoob.java // 輸出至 .\com\runoob\test\Runoob.class
來源碼與類別目錄可分離,便於分享類別而不公開原始碼。
| 作業系統 | 顯示 | 清除 | 設定 |
|---|---|---|---|
| Windows (DOS) | set CLASSPATH | set CLASSPATH= | set CLASSPATH=C:\users\jack\java\classes |
| UNIX (Bourne shell) | echo $CLASSPATH | unset CLASSPATH; export CLASSPATH | CLASSPATH=/home/jack/java/classes; export CLASSPATH |
編譯器與 JVM 透過 CLASSPATH + 套件名 定位 .class 檔案。多路徑用分隔符分開,預設包含當前目錄與 JAR 檔目錄。