套件 (package) 是用來組織類別 (class) 檔案的資料夾名稱
這需要用到關鍵字 (keyword) package 宣告套件識別字 (identifier) ,我們將上個單元的 ClassDemo05 改成 ClassDemo06 ,然後宣告放在套件 classdemo 中
001 | package classdemo; // 宣告套件 |
002 | |
003 | public 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 行
001 | package classdemo; // 宣告套件 |
編譯時要加上 -d 及路徑的旗標,我們路徑用小數點 . ,表示當前目錄
編譯完成就會產生新的資料夾 classdemo ,而 ClassDemo06.class 就放在這裡
執行時要加上資料夾的路徑
簡單說套件就是路徑名稱,這可以是多層的,例如 demo.classdemo 就在 demo 資料夾中的 classdemo 資料夾。
至於在其他程式中使用套件裡編譯好的 .class 檔案,就要用到關鍵字 import 了,例如我們在下面的 ClassDemo07.java 引入套件 classdemo 的 ClassDemo06
001 | // 引入套件中的類別名稱 |
002 | import classdemo.ClassDemo06; |
003 | |
004 | public 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 | // 引入套件中的類別名稱 |
002 | import classdemo.ClassDemo06; |
留意這裡是引入 classdemo.ClassDemo06 ,這讓我們在下面可以直接使用 ClassDemo06 的名稱
006 | // 建立套件裡的類別建立物件 |
007 | ClassDemo06 d = new ClassDemo06(11); |
當然我們也可以只引入 classdemo 的套件名稱,不過這樣使用 ClassDemo06 就要連套件名稱一起用,也就是要用 classdemo.ClassDemo06 宣告 ClassDemo06 型態 (type) 的物件 (object) 。
編譯執行,結果如下
接下來我們在進入軟體開發之前,把焦點放回 static 這個關鍵字上。
中英文術語對照
套件 | package |
類別 | class |
關鍵字 | keyword |
識別字 | identifier |
型態 | type |
物件 | object |
重點整理
- 宣告套件使用關鍵字 package ,編譯時加上參數 -d ,完成編譯後該套件的類別會放到套件名稱的資料夾中。
- 單獨執行套件中的類別檔案,要在執行指令加上路徑。
- 若要在其他類別中使用套件中編譯好的 .class 檔案,就要用關鍵字 import 引入到目前檔案中。
問題與討論
- 為什麼要用套件來組織類別檔案?
- 如果套件中編譯好的類別很多,能不能 import 一次就好了呢?
the end
沒有留言:
張貼留言