現在我們把 Encrypt 類別放進 encryptor 資料夾中,也就是 encryptor 套件。假設 Encrypt.java 與 EncryptDemo.java 都在 _code 資料夾中
Encrypt.java 原始程式碼的第一行需要使用關鍵字 (keyword) package
package encryptor;
完整的 Encrypt 類別程式碼請參考 Encrypt.java 。
藉此標明 Encrypt 在 encryptor 套件中,然後編譯使用
javac -d . Encrypt.java
-d 是指令 javac 的旗標之一,表示依路徑編譯,後面需要接路徑名稱,我們用小數點 . 表示目前的目錄,也就是在 _code 資料夾之中。按下 return (Enter) 鍵,就會出現 encryptor 資料夾
此時, Encrypt.class 就會在 encryptor 資料夾中。
然後,我們的 EncryptDemo 類別調整如下
public class EncryptDemo { public static void main(String[] args) { System.out.println(); String s[] = {"There is no spoon.", "It is all around us.", "Free your mind.", "Follow the white rabbit.", "Choice. The problem is choice.", "Action, reaction. Cause, effect.", "Everything that has a beginning has an end.", "Because I choose to."}; encryptor.Encrypt e = new encryptor.Encrypt(); String t = ""; for (int i = 0; i < 8; i++) { t = e.toEncode(s[i]); System.out.println(t); t = e.toDecode(t); System.out.println(t); } System.out.println(); } } /* 《程式語言教學誌》的範例程式 http://pydoing.blogspot.com/ 檔名:EncryptDemo.java 功能:示範 Java 程式 作者:張凱慶 時間:西元 2011 年 4 月 */
注意第 13 行
encryptor.Encrypt e = new encryptor.Encrypt();
這時候使用 Encrypt 類別,就得連用套件名稱 encryptor 。
編譯 EncryptDemo.java 的指令不需要額外的旗標
javac EncryptDemo.java
EncryptDemo.class 會出現在目前目錄,也就是 _code 資料夾之中
完整的編譯與執行,如下
為什麼要用套件呢?因為具有相同概念的類別,我們常常會取相同的菜市場名,例如我們設計圖形介面寫了個 Button 類別,但我們寫的 Button 還不夠用,然後找 API 中是否也有可以用的類別,結果發現 API 中也有 Button ,問題來了,我們同時使用自己寫的 Button 與 API 的 Button ,會造成名稱衝突,結果很有可能會是編譯器任挑一個 Button 給程式執行。
這就不是我們想要的執行結果,不是嗎?使用套件最大的好處是可以避免名稱衝突,因為使用套件裡的類別需要用全名,也就是帶有套件名稱用小數點接上類別名稱。我們再看一次 EncryptDemo 的第 13 行
encryptor.Encrypt e = new encryptor.Encrypt();
當然,也可以只用套件裡的類別名稱,這時候就得用另一個關鍵字 import 了!
中英文術語對照 | |
---|---|
套件 | package |
類別 | class |
關鍵字 | keyword |
您可以繼續參考
軟體開發
相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁
參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition
本文於 2013 年 1 月訂正
沒有留言:
張貼留言