1 / 21

第八章 套件的使用

第八章 套件的使用. 鄧姚文 http://www.ywdeng.idv.tw. 大綱. 8-1 Java 的 .class 檔案 8-2  套件 (Package) 的編譯與執行 8-3  引用套件下的類別 8-4  使用 jar 檔. 8-1 Java 的 .class 檔案. Java 的原始程式碼 (.java 檔 ) 在經過編譯後會產生「 .class 」檔案。而「 .class 」檔案數目會依據原始檔中定義的類別數目而定。 如果 Java 的原始檔中所有類別的型態都是預設型態,可以用任何一個類別的名稱當作檔案的名稱。

Download Presentation

第八章 套件的使用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第八章套件的使用 鄧姚文 http://www.ywdeng.idv.tw

  2. 大綱 • 8-1Java的.class檔案 • 8-2 套件 (Package) 的編譯與執行 • 8-3 引用套件下的類別 • 8-4 使用jar檔

  3. 8-1 Java的.class檔案 • Java的原始程式碼 (.java檔) 在經過編譯後會產生「.class」檔案。而「.class」檔案數目會依據原始檔中定義的類別數目而定。 • 如果Java的原始檔中所有類別的型態都是預設型態,可以用任何一個類別的名稱當作檔案的名稱。 • 每一個Java原始檔中只能有一個「public」的類別,而且該Java程式檔案的檔名必需和「public」類別的名稱相同 • class Dog{ } • class Fish{ } • class Cat{ }

  4. 8-2 套件 (Package) 的編譯與執行 • 分門別類地管理類別 • 定義套件 • 套件的定義敘述句必需置放於程式中非註解的第一行。 • 程式中不可以有一行以上的「package」敘述句。 package packagename;

  5. 8-2 套件 (Package) 的編譯與執行… • package的名稱可以是一組有意義的文字,也可以是一連串以句號 ( . ) 組合而成的文字 • 套件名稱中的句號 ( . ) 相當於Windows作業系統下的表示路徑的分隔符號 ( \ ) • 原始檔在編譯後,會在原始檔所在的目錄下產生「stock」資料夾,並在「stock」資料夾下再產生「sale」子資料夾,而編譯後的「Customer.class」檔案就放在「sale」資料夾中。 package stock.sale; public class Customer {}

  6. 8-2 套件 (Package) 的編譯與執行… • Java程式中的每一個類別檔都一定是屬於某一個套件,位於同一個套件下的類別檔可以互相的引用。 • 沒有定義package敘述句的Java檔案,編譯所產生的類別檔放置在「預設套件 (default package)」中,也就是Java原始檔案所在的同一個目錄 (現行目錄) 下。

  7. 8-2 套件 (Package) 的編譯與執行… • 在現行目錄下直接編譯具有package敘述句的Java程式,必須在「javac」指令後方再加上「-d」參數,參數後方再加上目錄名稱,最後再加上需要編譯的程式名稱: • 可以一次編譯兩個以上的Java原始檔: javac –d . myPackage.java javac –d . myPackage.java myPackage.java

  8. 8-2 套件 (Package) 的編譯與執行… • 如果不特別指定「-d」參數來編譯具有「package mypackage;」敘述的java原始檔。以範例中的「mypackage.java」為例,依照以下的方式完成開發及編譯的流程: 一、在現行目錄下建立mypackage資料夾。 二、在現行目錄下使用編輯軟體撰寫程式。 三、將程式檔儲存在現行目錄下的mypackage資料夾中,並命名為「mypackage.java」。 四、在現行目錄下,使用「javac」指令,並指明程式檔的儲存相對路徑及檔名,來編譯程式。指令如下:「javac .\mypackage\mypackage.java」。

  9. 8-2-1 執行套件 • 必須指明套件的名稱及類別檔的名稱,package和package之間,package和class名稱之間必須以「.」作區隔 C:\Work\Chap8>java mypackage.PackageTest

  10. 8-2-2 使用classpath參數執行套件 • 以「classpath」指明需要的檔案。 • 例: • 檔案名稱為「PackageTest.class」 • 檔案位於 C:\Work\Chap8 • 套件為 mypackage java -classpath .;c:\Work\Chap8\ mypackage.PackageTest

  11. 8-2-3 使用classpath參數執行套件… • 設定 CLASSPATH 環境變數: set CLASSPATH=%CLASSPATH%;C:\Work\Chap8\ java myackage.PackageTest

  12. 8-3 引用套件下的類別 • 利用「import」敘述將相關的套件引入: • 在程式中重覆使用「import」敘述,引入多個套件。 • 使用「*」代表要引入套件下的所有類別。 • 預設的 import • import java.lang.* import java.awt.color; import java.awt.*;

  13. 8-3-1 使用import static敘述-J2SE 5.0 • 新的import敘述將類別中的static方法引入,使用該方法時不需要再加上類別的名稱 import static 套件名稱.類別名稱.方法名稱; import static java.lang.System.out; out.println();

  14. 8-3-2 使用存取修飾子 • 使用不同的存取修飾子可以限制類別或成員的存取模式:

  15. 8-3-3 Import static的問題 • 遮蔽問題 • import static 引入的屬性值會被類別或方法中相同名稱的屬性遮蔽。 • 方法的衝突問題 • import static 同時引入的類別中具有相同名稱的方法時,編譯錯誤!

  16. 8-4 使用jar檔 • 「jar」是Java Archive的簡稱,可以當作類別的集合。 • Jar 為 ZIP 格式,可以將某個 package下的所有類別檔與子目錄打包成一個 jar 檔 • jar 指令格式: jar [參數] 目的檔名 要加入的檔案或路徑

  17. 8-4 使用jar檔 …

  18. 8-4 使用jar檔 … • 更新JAR檔案的內容:使用u參數 • 顯示JAR檔案的內容:使用tf參數 • 取出JAR檔案的內容:使用xf參數 jar -uvf test.jar myPackage\Update.class jar uvf test.jar myPackage jar xf test.jar

  19. 使用JAR檔案中的類別 • 直接將JAR放在「JAVA_HOME」路徑中 • 編譯引入套件的 Java 檔案時,使用「classpath」參數指明 JAR 檔的位置。 • 直接設定 CLASSPATH javac –classpath C:\Work\Chap8\display.jar UseJar.java

  20. 練習 • 在一個 Java 原碼檔之中撰寫下列類別,套件名稱為 tw.edu.knu.im • 一個代表『點』的類別,Point,提供 x 座標與 y 座標兩個屬性 • 一個代表『線』的類別,Line,一條直線由兩點構成,提供『起點』、『終點』、『長度』等屬性 • 編譯後觀察專案目錄內的子目錄結構

  21. 練習 • 將前一個練習的類別檔案包成一個 JAR 檔 • 寫一個測試程式,建立一條直線,印出其起點、終點座標,以及長度 • 問題:如何在專案內引入另一個專案產生的 JAR 檔?

More Related