建立自己本地的java包
首先有兩點:
1.一個java原始檔只能有一個public類(或者介面)——public類類名就是原始檔的名字,因為JVM要根據名字去找檔案
2.只有被宣告為public的類才能被包外的非子類訪問
由此可知:想要被包外非子類呼叫的類或者介面,必須單獨成一個檔案,測試如下:
目錄結構1:test.java和testpkg資料夾在一個目錄,testpkg中有A.java檔案
A.java:
package testpkg; public class A{ public void showA(){//方法必須是public,否則不能被包外訪問 System.out.println("A In testpkg");} } interface B{//如果interface前面同時加上public,會有報錯:
test.java:
import testpkg.*; public class test{ public static void main(String[] args) { A a=new A(); a.showA();}
}//到這一步為止,執行結果很正常
class C implements B{ public void B(){ System.out.println("C In test.java implements B in testpkg"); } }//報錯,提示:
這是因為介面B並不是public的介面,無法被包外的非子類呼叫
這看起來比較麻煩哈,但是正是這樣保證了封裝性。下面看看怎樣建立自己的本地java包
上面的測試包和java原始檔放在同一個目錄下,可以直接import,如果作如下更改
1.把teskpkg放在C:\Users\Administrator\目錄下,也就是test.java的上級目錄【test.java的目錄是C:\Users\Administrator\Desktop】
如果程式碼不做修改直接執行程式碼會報錯:錯誤: 程式包testpkg不存在
如果程式碼做修改,我也不知道怎麼更改import語句。。。
2.把testpkg放在同級或下級目錄:import testpkg.x.x.*就好了
有了以上基礎,現在建立自己的本地包
裝jdk的時候肯定改過classpath目錄,那個目錄是我們要引用java自身提供的包的保障,去環境變數檢視,會發現:
其中,javahome是這樣的(每個人的不一樣哈)
注意到classpath裡面有一個javahome\lib,這裡面就是java原生的庫了。
F:\Java裡面是我自己的本地庫,也就是說,如果我們要建立自己的本地庫,只需要在classpath中新增一個地址,然後在該地址下面建立包檔案就可以
比如這是我的包檔案:以後要引用自己的包,就像要引用java內建包一樣只用import MyPack.*就行
對了上面的環境變數可能有些不是javahome\lib,而是如下。實際上下面的寫法不會錯,但是dt.jar和tools.jar在jdk-9以後是沒有的