1. 程式人生 > >包機制、訪問修飾符、Jar包 java初學 面向物件五

包機制、訪問修飾符、Jar包 java初學 面向物件五

  1. 包機制

問題:當定義了多個類的時候,可能會發生類名的重複問題。

在java中採用包機制處理開發者定義的類名衝突問題。

怎麼使用java的包機制呢?

  1. 使用package 關鍵字。
  2. package 包名。

問題:

  1. javac PackDemo1.java編譯沒有問題。
  2. java PackDemo1 執行出錯。

錯誤原因分析:

在當前目錄下找不到有pack目錄,更加找不到pack目錄下面的PackageDemo1.java檔案。

解決辦法: 

  1. 自己在當前目錄下新建一個pack目錄。
  2. 執行Java pagk.PackageDemo1命令。(包其實就是資料夾).

存在的問題:使用包機制的話,我們是否每次都要自己建立一個資料夾呢?

解決:

在編譯的時候則可以指定類檔案存放的檔案夾了。

javac -d . PackageDemo1.java    -d 後面跟著就是包名,指定包存放的路徑。

包的優點

  1. 防止類檔案衝突。
  2. 使原始檔與類檔案分離,便已軟體最終釋出。

注意細節

  1. 一個java類只能定義在一個包中。
  2. 包語句肯定是描述類的第一條語句。

包機制引發的問題

有了包之後訪問類每次都需要把包名和類名寫全。

解決:使用import語句。

格式 import 包名.類名 ;

注意細節:

  1. 如果想使用一個包中的許多類時,這時不需要多條的匯入語句,使用“*”號萬用字元代表所有的類。
  2. 使用*時不能匯入包中的子類包的class檔案。
  3. import語句可以是多條.
  1. 訪問修飾符

訪問修飾符是用來控制類、屬性、方法的可見性的關鍵字稱之為訪問修飾符。

  1. public 一個類中,同一包中,子類中,不同包中
  2. protected  一個類中,同一包中,子類中
  3. default 一個類中,同一包中
  4. private 一個類中
  1. (修飾類成員)類成員
  1. 成員使用private修飾只在本類中使用。
  2. 如果一個成員沒有使用任何修飾符,就是default,該成員可以被包中的其
  3. 他類訪問。
  4. protected成員被protected修飾可以被包中其他類訪問,並且位於不同
  5. 包中的子類也可以訪問。
  6. public修飾的成員可以被所有類訪問。
  1. (修飾類)類
  1. 類只有兩種public和預設(成員內部類可以使用private))
  2. 父類不可以是private和protected,子類無法繼承
  3. public類可以被所有類訪問
  4. 預設類只能被同一個包中的類訪問
  1. Jar包

1:jar就是打包檔案

jar檔案時一種打包檔案java active File,與zip相容,稱之為jar包

開發了很多類,需要將類提供給別人使用,通常以jar包形式提供.當專案寫完之後,需要及將class位元組碼檔案打包部署給客戶。如何打包?可以使用jar命令.

2:jar命令

1:jar工具存放於jdk的bin目錄中(jar.exe)

2:jar工具:主要用於對class檔案進行打包(壓縮)

3:dos中輸入jar檢視幫助

3:案例使用jar命令
將day10中的cn檔案打包為名字為test.jar檔案(cn 檔案是使用javac -d 編譯帶包的class資料夾)

jar cvf test.jar cn

詳細命令:

1:jar cf test.jar cn 在當前目錄生成test.jar 檔案,沒有顯示執行過程

2:jar cvf test.jar cn 顯示打包中的詳細資訊

3:jar tf test.jar  顯示jar檔案中包含的所有目錄和檔名

4:jar tvf test.jar 顯示jar檔案中包含的所有目錄和檔名大小,建立時間詳

細資訊

5:jar xf test.jar  解壓test.jar到當前目錄,不顯示資訊

6:jar xvf test.jar 解壓test.jar到當前目錄,顯示詳細資訊

7:可以使用WinRaR進行jar解壓

8;將兩個類檔案歸檔到一個名為 test2.jar 的歸檔檔案中:

jar cvf test2.jar Demo3.class Demo4.class

9:重定向

1:tvf可以檢視jar檔案內容,jar檔案大,包含內容多,dos看不全。

2:檢視jdk中的rt.jar 檔案 jar tvf rt.jar

3:jar tvf rt.jar>d:\rt.txt

存在問題:

    1. 計算的程式的可變的。
    2. 把會改變的程式抽取出來單獨做一個方法。
    3. 但是該方法不能確定執行的程式碼,宣告為抽象的方法。
    4. 建立實現類繼承並實現父類的未實現的函式。
    5. 為了避免子類重寫父類的模版程式碼,需要將模版程式碼修飾為final

其他: