包機制、訪問修飾符、Jar包 java初學 面向物件五
- 包機制
問題:當定義了多個類的時候,可能會發生類名的重複問題。
在java中採用包機制處理開發者定義的類名衝突問題。
怎麼使用java的包機制呢?
- 使用package 關鍵字。
- package 包名。
問題:
- javac PackDemo1.java編譯沒有問題。
- java PackDemo1 執行出錯。
錯誤原因分析:
在當前目錄下找不到有pack目錄,更加找不到pack目錄下面的PackageDemo1.java檔案。
解決辦法:
- 自己在當前目錄下新建一個pack目錄。
- 執行Java pagk.PackageDemo1命令。(包其實就是資料夾).
存在的問題:使用包機制的話,我們是否每次都要自己建立一個資料夾呢?
解決:
在編譯的時候則可以指定類檔案存放的檔案夾了。
javac -d . PackageDemo1.java -d 後面跟著就是包名,指定包存放的路徑。
包的優點
- 防止類檔案衝突。
- 使原始檔與類檔案分離,便已軟體最終釋出。
注意細節
- 一個java類只能定義在一個包中。
- 包語句肯定是描述類的第一條語句。
包機制引發的問題
有了包之後訪問類每次都需要把包名和類名寫全。
解決:使用import語句。
格式: import 包名.類名 ;
注意細節:
- 如果想使用一個包中的許多類時,這時不需要多條的匯入語句,使用“*”號萬用字元代表所有的類。
- 使用*時不能匯入包中的子類包的class檔案。
- import語句可以是多條.
- 訪問修飾符
訪問修飾符是用來控制類、屬性、方法的可見性的關鍵字稱之為訪問修飾符。
- public 一個類中,同一包中,子類中,不同包中
- protected 一個類中,同一包中,子類中
- default 一個類中,同一包中
- private 一個類中
- (修飾類成員)類成員
- 成員使用private修飾只在本類中使用。
- 如果一個成員沒有使用任何修飾符,就是default,該成員可以被包中的其
- 他類訪問。
- protected成員被protected修飾可以被包中其他類訪問,並且位於不同
- 包中的子類也可以訪問。
- public修飾的成員可以被所有類訪問。
- (修飾類)類
- 類只有兩種public和預設(成員內部類可以使用private))
- 父類不可以是private和protected,子類無法繼承
- public類可以被所有類訪問
- 預設類只能被同一個包中的類訪問
- 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
存在問題:
-
- 計算的程式的可變的。
- 把會改變的程式抽取出來單獨做一個方法。
- 但是該方法不能確定執行的程式碼,宣告為抽象的方法。
- 建立實現類繼承並實現父類的未實現的函式。
- 為了避免子類重寫父類的模版程式碼,需要將模版程式碼修飾為final
其他: