Java 入門指南 V2.00 - 單元 11 - 套件




套件 (package) 是用來組織類別 (class) 檔案的資料夾名稱



這需要用到關鍵字 (keyword) package 宣告套件識別字 (identifier) ,我們將上個單元的 ClassDemo05 改成 ClassDemo06 ,然後宣告放在套件 classdemo


001package classdemo; // 宣告套件
002
003public class ClassDemo06 {
004   private int a;
005
006   public ClassDemo06(int a) {
007       setA(a);
008   }
009
010   public void setA(int a) {
011      this.a = a;
012   }
013
014   public int getA() {
015      return a;
016   }
017
018   public int doSomething(int a) {
019      return this.a + a;
020   }
021
022   public static void main(String[] args) { 
023      ClassDemo06 d = new ClassDemo06(13);
024
025      System.out.println();
026      System.out.println(d.getA());
027      System.out.println(d.doSomething(9));
028      System.out.println();
029   }
030}
031 
032/* 檔名: ClassDemo06.java
033   作者: Kaiching Chang
034   時間: September, 2014  */

package 通常放在程式碼的第 1 行


001package classdemo; // 宣告套件

編譯時要加上 -d 及路徑的旗標,我們路徑用小數點 . ,表示當前目錄



編譯完成就會產生新的資料夾 classdemo ,而 ClassDemo06.class 就放在這裡



執行時要加上資料夾的路徑



簡單說套件就是路徑名稱,這可以是多層的,例如 demo.classdemo 就在 demo 資料夾中的 classdemo 資料夾。

至於在其他程式中使用套件裡編譯好的 .class 檔案,就要用到關鍵字 import 了,例如我們在下面的 ClassDemo07.java 引入套件 classdemoClassDemo06


001// 引入套件中的類別名稱
002import classdemo.ClassDemo06;
003
004public class ClassDemo07 {
005   public static void main(String[] args) { 
006      // 建立套件裡的類別建立物件
007      ClassDemo06 d = new ClassDemo06(11);
008
009      System.out.println();
010      System.out.println(d.getA());
011      System.out.println(d.doSomething(8));
012      System.out.println();
013   }
014}
015 
016/* 檔名: ClassDemo07.java
017   作者: Kaiching Chang
018   時間: September, 2014  */

import 也會放在程式檔案的一開始,這是因為 import 用來引入識別字名稱,引入後才可以使用所引入的識別字


001// 引入套件中的類別名稱
002import classdemo.ClassDemo06;

留意這裡是引入 classdemo.ClassDemo06 ,這讓我們在下面可以直接使用 ClassDemo06 的名稱


006// 建立套件裡的類別建立物件
007ClassDemo06 d = new ClassDemo06(11);

當然我們也可以只引入 classdemo 的套件名稱,不過這樣使用 ClassDemo06 就要連套件名稱一起用,也就是要用 classdemo.ClassDemo06 宣告 ClassDemo06 型態 (type) 的物件 (object) 。


編譯執行,結果如下



接下來我們在進入軟體開發之前,把焦點放回 static 這個關鍵字上。


中英文術語對照


套件package
類別class
關鍵字keyword
識別字identifier
型態type
物件object

重點整理


  1. 宣告套件使用關鍵字 package ,編譯時加上參數 -d ,完成編譯後該套件的類別會放到套件名稱的資料夾中。
  2. 單獨執行套件中的類別檔案,要在執行指令加上路徑。
  3. 若要在其他類別中使用套件中編譯好的 .class 檔案,就要用關鍵字 import 引入到目前檔案中。

問題與討論


  1. 為什麼要用套件來組織類別檔案?
  2. 如果套件中編譯好的類別很多,能不能 import 一次就好了呢?

the end

沒有留言: