package JDK 6java applet java awtjava awt colorjava

  • Slides: 47
Download presentation

為何需要package 舉例來說,JDK 6提供的類別庫有很多,例如java. applet、 java. awt、java. awt. color、java. awt. font、java. io、java. lang、 java. lang.

為何需要package 舉例來說,JDK 6提供的類別庫有很多,例如java. applet、 java. awt、java. awt. color、java. awt. font、java. io、java. lang、 java. lang. ref、java. math…等等。 您可以在JDK 6的文件網頁中查到所有的類別庫,網址如下: http: //java. sun. com/javase/6/docs/api/index. html? overviewsummary. html 若您已經下載了JDK 6的完整檔案,則可以在下列目錄中找到 相同的網頁,路徑如下: jdk-6 -docdocsapiindex. html

定義package 1 2 3 4 5 6 7 8 9 10 11 12 13

定義package 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /* 檔名: ch 11_01. java 功能: 類別庫 */ package ch 11; import java. lang. *; public class ch 11_01 //主類別 { public static void main(String args[]) { CCircle obj = new CCircle(5. 0); obj. show. Area(); } } class CCircle { protected double area; protected double radius; protected final double pi=3. 14; public CCircle(double i){ radius=i; } public void show. Area() { area=radius*pi;

定義package 但我們不可透過下列指令執行ch 11_01類別檔: 使用本章之前的執行方式是行不通的 C: >java my. Java. ch 11_01 Exception in thread "main"

定義package 但我們不可透過下列指令執行ch 11_01類別檔: 使用本章之前的執行方式是行不通的 C: >java my. Java. ch 11_01 Exception in thread "main" java. lang. No. Class. Def. Found. Error: my. Java/ch 11_01 ( wrong name: ch 11/ch 11_01) at java. lang. Class. Loader. define. Class 1(Native Method) at java. lang. Class. Loader. define. Class(Unknown Source) at java. security. Secure. Class. Loader. define. Class(Unknown Source) at java. net. URLClass. Loader. access$000(Unknown Source) at java. net. URLClass. Loader$1. run(Unknown Source) at java. security. Access. Controller. do. Privileged(Native Method) at java. net. URLClass. Loader. find. Class(Unknown Source) at java. lang. Class. Loader. load. Class(Unknown Source) at sun. misc. Launcher$App. Class. Loader. load. Class(Unknown Source) at java. lang. Class. Loader. load. Class. Internal(Unknown Source)

切割檔案 【觀念範例11 -2】:將各類別切為各檔案。 範例11 -2:CCircle. java(隨書光碟 my. Javach 11CCircle. java) 1 2 3 4

切割檔案 【觀念範例11 -2】:將各類別切為各檔案。 範例11 -2:CCircle. java(隨書光碟 my. Javach 11CCircle. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 檔名: CCircle. java //未宣告package class CCircle { protected double area; protected double radius; protected final double pi=3. 14; public CCircle(double i){ radius=i; } public void show. Area() { area=radius*pi; System. out. println("Area=" + area); } }

切割檔案 ch 11_02. java(隨書光碟 my. Javach 11_02. java) 1 2 3 4 5 6

切割檔案 ch 11_02. java(隨書光碟 my. Javach 11_02. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /* 檔名: ch 11_02. java 功能: 以類別切割檔案 */ //未宣告package import java. lang. *; public class ch 11_02 //主類別 { public static void main(String args[]) { CCircle obj = new CCircle(5. 0); obj. show. Area(); } }

切割檔案 範例說明: 我們將程式依照類別切割為ch 11_02. java與CCricle. java兩個檔案, 由於ch 11_02. java使用到CCircle類別,所以應該編譯CCricle. java產 生CCircle. class也編譯ch 11_02. java,如此執行時就不會出現錯誤。

切割檔案 範例說明: 我們將程式依照類別切割為ch 11_02. java與CCricle. java兩個檔案, 由於ch 11_02. java使用到CCircle類別,所以應該編譯CCricle. java產 生CCircle. class也編譯ch 11_02. java,如此執行時就不會出現錯誤。 編譯及執行過程如下: 執行結果: 編譯CCircle. java C: my. Javach 11>javac ch 11_02. java C: my. Javach 11>java ch 11_02 Area=78. 5 編譯ch 11_02. java 執行ch 11_02. class

切割檔案 宣告package 1 2 3 4 5 6 7 8 9 10 11 12

切割檔案 宣告package 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 檔名: 位於pack 1CRect. java package pack 1; //本檔案內的類別屬於pack 1類別庫 class CRect { protected double area; protected double len, width; public CRect(double i, double j){ len=i; width=j; } public void show. Area() { area=len*width; System. out. println("Area=" + area); } }

切割檔案 宣告package ch 11_03. java(隨書光碟 my. Javach 11pack 1ch 11_03. java) 1 2 3

切割檔案 宣告package ch 11_03. java(隨書光碟 my. Javach 11pack 1ch 11_03. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* 檔名: 位於pack 1ch 11_03. java 功能: 將不同檔案的類別宣告為同一個類別庫 */ package pack 1; //本檔案內的類別屬於pack 1類別庫 public class ch 11_03 //主類別 { public static void main(String args[]) { CRect obj = new CRect(5. 0, 3. 0); obj. show. Area(); } }

切割檔案 使用不同package的類別 【觀念範例11 -4】:使用其他類別庫的類別。 範例11 -4:CRect. java(隨書光碟 my. Javach 11pack 2 aCRect. java) 1

切割檔案 使用不同package的類別 【觀念範例11 -4】:使用其他類別庫的類別。 範例11 -4:CRect. java(隨書光碟 my. Javach 11pack 2 aCRect. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 檔名: 位於pack 2 aCRect. java package pack 2 a; //本檔案內的類別屬於pack 2 a類別庫 public class CRect //宣告為public才可以讓其他類別庫使用 { protected double area; protected double len, width; public CRect(double i, double j){ len=i; width=j; } public void show. Area() { area=len*width; System. out. println("Area=" + area); } }

切割檔案 使用不同package的類別 ch 11_04. java(隨書光碟 my. Javach 11pack 2 bch 11_04. java) 1 2

切割檔案 使用不同package的類別 ch 11_04. java(隨書光碟 my. Javach 11pack 2 bch 11_04. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* 檔名: 位於pack 2 bch 11_04. java 功能: 使用其他類別庫的類別 */ package pack 2 b; //本檔案內的類別屬於pack 2 b類別庫 public class ch 11_04 //主類別 { public static void main(String args[]) { pack 2 a. CRect obj = new pack 2 a. CRect(5. 0, 3. 0); obj. show. Area(); } }

切割檔案 使用不同package的類別 【觀念範例11 -5】:透過import匯入類別。 範例11 -5:CRect. java(隨書光碟 my. Javach 11pack 3 aCRect. java) 1

切割檔案 使用不同package的類別 【觀念範例11 -5】:透過import匯入類別。 範例11 -5:CRect. java(隨書光碟 my. Javach 11pack 3 aCRect. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 檔名: 位於pack 3 aCRect. java package pack 3 a; //本檔案內的類別屬於pack 3 a類別庫 public class CRect //宣告為public才可以讓其他類別庫使用 { protected double area; protected double len, width; public CRect(double i, double j){ len=i; width=j; } public void show. Area() { area=len*width; System. out. println("Area=" + area); } }

切割檔案 使用不同package的類別 ch 11_05. java(隨書光碟 my. Javach 11pack 3 bch 11_05. java) 1 2

切割檔案 使用不同package的類別 ch 11_05. java(隨書光碟 my. Javach 11pack 3 bch 11_05. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 檔名: 位於pack 3 bch 11_05. java 功能: 使用其他類別庫的類別 */ package pack 3 b; //本檔案內的類別屬於pack 3 b類別庫 import pack 3 a. CRect; //匯入類別 public class ch 11_05 //主類別 { public static void main(String args[]) { CRect obj = new CRect(5. 0, 3. 0); obj. show. Area(); } }

切割檔案 封裝修飾字對package的影響 【觀念範例11 -6】:類別封裝對繼承的影響。 範例11 -6:CShape. java(隨書光碟 my. Javach 11pack 4 aCShape. java) 1

切割檔案 封裝修飾字對package的影響 【觀念範例11 -6】:類別封裝對繼承的影響。 範例11 -6:CShape. java(隨書光碟 my. Javach 11pack 4 aCShape. java) 1 2 3 4 5 6 7 // 檔名: 位於pack 4 aCShape. java package pack 4 a; //本檔案內的類別屬於pack 4 a類別庫 public class CShape //請刪除public, 再試著編譯一次 { protected double area; }

切割檔案 封裝修飾字對package的影響 CRect. java(隨書光碟 my. Javach 11pack 4 bCRect. java) 1 2 3 4

切割檔案 封裝修飾字對package的影響 CRect. java(隨書光碟 my. Javach 11pack 4 bCRect. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 // 檔名: 位於pack 4 bCRect. java package pack 4 b; //本檔案內的類別屬於pack 4 b類別庫 public class CRect extends pack 4 a. CShape //public可以讓其他類別庫使用 { protected double len, width; public CRect(double i, double j){ len=i; width=j; } public void show. Area() { area=len*width; System. out. println("Area=" + area); } }

切割檔案 封裝修飾字對package的影響 ch 11_06. java(隨書光碟 my. Javach 11pack 4 cch 11_06. java) 1 2

切割檔案 封裝修飾字對package的影響 ch 11_06. java(隨書光碟 my. Javach 11pack 4 cch 11_06. java) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 檔名: 位於pack 4 cch 11_06. java 功能: 封裝對於繼承的影響 */ package pack 4 c; //本檔案內的類別屬於pack 4 c類別庫 import pack 4 b. CRect; //匯入類別 public class ch 11_06 //主類別 { public static void main(String args[]) { CRect obj = new CRect(5. 0, 3. 0); obj. show. Area(); } }

切割檔案 封裝修飾字對package的影響 執行結果: 範例說明: C: my. Javach 11>javac pack 4 aCShape. java C: my.

切割檔案 封裝修飾字對package的影響 執行結果: 範例說明: C: my. Javach 11>javac pack 4 aCShape. java C: my. Javach 11>javac pack 4 bCRect. java C: my. Javach 11>javac pack 4 cch 11_06. java C: my. Javach 11>java pack 4 c. ch 11_06 Area=15. 0 (1)隸屬於pack 4 a的CShape被宣告為public,故隸屬pack 4 b的CRect 類別也可以繼承它,但仍須指明類別庫名稱(或採用import方式), 如同CRect. java的第 4行。並且在CRect. java內也可以使用父類別 CShape的protected成員area。 (2)若將CShape. java第 4行的public刪除,則在編譯CShape. java時不 會有錯誤,但在編譯CRect. java時將會出現錯誤,因為無法繼承 CShape。