Java知多少(25)再谈Java包
在Java中,為了組織代碼的方便,可以將功能相似的類放到一個文件夾內,這個文件夾,就叫做包。
包不但可以包含類,還可以包含接口和其他的包。
目錄以"\"來表示層級關系,例如 E:\Java\workspace\Demo\bin\p1\p2\Test.java。
包以"."來表示層級關系,例如 p1.p2.Test 表示的目錄為 \p1\p2\Test.class。
如何實現包
通過 package 關鍵字可以聲明一個包,例如:
? ? package p1.p2;
必須將 package 語句放在所有語句的前面,例如:
表明 Test 類位于 p1.p2 包中。
包的調用
在Java中,調用其他包中的類共有兩種方式。
1) 在每個類名前面加上完整的包名
程序舉例:
1 public class Demo { 2 public static void main(String[] args) { 3 java.util.Date today=new java.util.Date(); 4 System.out.println(today); 5 } 6 }運行結果:
Wed Dec 03 11:20:13 CST 2014
2) 通過 import 語句引入包中的類
程序舉例:
1 import java.util.Date; 2 // 也可以引入 java.util 包中的所有類 3 // import java.util.*; 4 public class Demo { 5 public static void main(String[] args) { 6 Date today=new Date(); 7 System.out.println(today); 8 } 9 }運行結果與上面相同。
實際編程中,沒有必要把要引入的類寫的那么詳細,可以直接引入特定包中所有的類,例如 import java.util.*;。
類的路徑
Java 在導入類時,必須要知道類的絕對路徑。
首先在?E:\Java\workspace\Demo\src\p0\ 目錄(E:\Java\workspace\Demo\src\ 是項目源文件的根目錄)下創建 Demo.java,輸入如下代碼:
再在?E:\Java\workspace\Demo\src\p1\p2 目錄下創建 Test.java,輸入如下代碼:
1 package p1.p2; 2 public class Test { 3 public Test(){ 4 System.out.println("我是Test類的構造方法"); 5 } 6 }假設我們將 classpath 環境變量設置為?.;D:\Program Files\jdk1.7.0_71\lib,源文件 Demo.java 開頭有?import?p1.p2.Test; 語句,那么編譯器會先檢查 E:\Java\workspace\Demo\src\p0\p1\p2\ 目錄下是否存在 Test.java 或 Test.class 文件,如果不存在,會繼續檢索?D:\Program Files\jdk1.7.0_71\lib\p1\p2\ 目錄,兩個目錄下都不存在就會報錯。顯然,Test.java 位于?E:\Java\workspace\Demo\src\p1\p2\ 目錄,編譯器找不到,會報錯,怎么辦呢?
可以通過 javac 命令的 classpath 選項來指定類路徑。
打開CMD,進入 Demo.java 文件所在目錄,執行 javac 命令,并將 classpath 設置為?E:\Java\workspace\Demo\src,如下圖所示:
運行Java程序時,也需要知道類的絕對路徑,除了 classpath 環境變量指定的路徑,也可以通過 java 命令的 classpath 選項來增加路徑,如下圖所示:
注意 java 命令與 javac 命令的區別,執行 javac 命令需要進入當前目錄,而執行 java 命令需要進入當前目錄的上級目錄,并且類名前面要帶上包名。
可以這樣來理解,javac是一個平臺命令,它對具體的平臺文件進行操作,要指明被編譯的文件路徑。而java是一個虛擬機命令,它對類操作,即對類的描述要用點分的描述形式,并且不能加擴展名,還要注意類名的大小寫。
這些命令比較繁雜,實際開發都需要借助 Eclipse,在Eclipse下管理包、編譯運行程序都非常方便。Eclipse 實際上也是執行這些命令。
包的訪問權限
被聲明為 public 的類、方法或成員變量,可以被任何包下的任何類使用,而聲明為 private 的類、方法或成員變量,只能被本類使用。
沒有任何修飾符的類、方法和成員變量,只能被本包中的所有類訪問,在包以外任何類都無法訪問它。
?系列文章:
Java知多少(上)
Java知多少(中)
Java知多少(下)
轉載于:https://www.cnblogs.com/Coda/p/4393071.html
總結
以上是生活随笔為你收集整理的Java知多少(25)再谈Java包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop计算中的Shuffle过程
- 下一篇: 《架构师(“拥抱2015”特刊)》发布