訪問控制(或隱藏具體實現)與“最初的實現並不恰當”有關
訪問控制符的等級,從最大權限到最小權限依次為:public、protected、包訪問權限(沒有關鍵詞)、private
1.包:庫單元 package
包內包含有一組類,它們在單一的名字空間之下被組織在了一起。
import關鍵字:如果要導入單一的類 import java.util.ArrayList
想要導入其下所有的類 import java.util.*
包機制:為了解決名字空間、名字沖突
當編寫一個Java源代碼文件時,此文件通常被稱為編譯單元。每個編譯單元都必須有一個後綴名.Java
而在編譯單元內可以有一個(只能有一個)public類,該類的名稱必須與文件的名稱相同。如果在該編譯單元
還有別的類,在包之外是無法看到的,因為它們不是public類,它們為public類提供支持。
1.代碼組織
package語句:必須是文件中除注釋以外的第一句程序代碼
package和import關鍵字將單一的全局名字空間分隔開,使得無論多少人使用Internet以及Java開始編寫類,都不會出現名稱沖突問題。
2.創建獨一無二的包名
按照慣例:package名稱的第一部分是類的創建者的反順序的internet域名。
Java解釋器運行過程:首先,找出環境變量CLASSPATH。CLASSPATH包含一個或多個目錄,用作查找.class文件的根目錄。從根目錄開始,解釋器獲取包的名稱並將每個句點替換成反斜槓,以從CLASSPATH根中產生一個路徑名稱。得到的路徑名稱會與CLASSPATH的各個不同的項相連接,解釋器就在這些目錄中查找與你所要創建的類名稱相關的.class文件。
沖突:將兩個含有相同名稱的類庫以“*”形式同時導入,將會出現沖突。為了解決沖突,必須明確指出調用類的全路徑。
3.定制工具類
可以創建自己的工具庫來減少或消除重復的代碼。
4.用import改變行為
在不同的包中編寫相同名稱但行為不同的類,通過導入不同的類,可以改變類的行為。
5.對使用包的忠告
無論何時創建包,都已經在給定包的名稱的時候隱含地指定了目錄結構。
2.Java訪問權限修飾詞
1.包訪問權限
默認訪問權限沒有任何關鍵字,通常是指包訪問權限。
包訪問權限允許將包內所有相關的類組合起來,以使它們彼此之間可以輕松地相互作用。
取得一個類中某個成員的訪問權的唯一途徑:
1.使該成員成為public
2.通過不加訪問控制權限修飾詞並將其他類放置於同一個包內的方式給成員賦予包訪問權。
查看本欄目
3.繼承訪問public和protected成員,只有繼承的兩個類都處於同一個包內時,它才可以訪問包訪問權限的成員。
4.提供訪問器和變異器(get和set方法)
2.public:接口訪問權限
使用關鍵字public,就意味著public之後緊跟著的成員聲明自己對每個人都是可用的。
默認包:處於相同的目錄並且沒有給自己設定任何包名稱。Java將這樣的文件自動看作是隸屬於
該目錄的默認包中,於是它們為該目錄中所有其他的文件都提供了包訪問權限。
3.private:你無法訪問
private:除了包含該成員的類之外,其他任何類都無法訪問這個成員。
4.protected:繼承訪問權限
子類繼承父類,子類可以訪問父類protected成員
5.作用域public,private,protected,以及不寫時的區別:
當前類 同一package 不同package子孫類 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
3.類的訪問權限
1.每個編譯單元都只能有一個public類
2.public類的名稱必須完全與含有該編譯單元的文件名相匹配
3.編譯單元內完全不帶public類也是可能的,這種情況下,可以隨意對文件命名。
注:對於類的訪問權限:僅有兩個:包訪問權限或public