1. 程式人生 > >Java中的包訪問許可權

Java中的包訪問許可權

Java預設訪問許可權沒有任何關鍵字,但通常是指包訪問許可權(有時也表示成為friendly)。

   這就意味著當前的包中的所有其他類對那個成員都有訪問許可權,但對於這個包之外的所有類,這個成員卻是private。

   由於一個編譯單元(即一個檔案),只能隸屬於一個包,所以經由包訪問許可權,處於同一個編譯單元中的所有類彼此之間都是自動可訪問的


   Java中包訪問許可權允許將包內所有相關的類組合起來,以使它們彼此之間可以輕鬆地相互作用。

   當把類組織起來放進一個包內之時,也就給它們的包訪問許可權的成員賦予了相互訪問的許可權,您“擁有”了該包內的程式程式碼。“只有您擁有的程式程式碼才可以訪問您所擁有的其他程式程式碼”,這是合理的。

   應該說,包訪問許可權為把類群聚在一個包中的做法提供了意義和理由。在許多語言中,在檔案內組織定義的方式是任意的,但在Java中,則要強制您以一種合理的方式對它們加以組織。

   另外,您可能還想要排除這樣的類 —  它們不應該訪問在當前包中所定義的類。


   類控制著哪些程式碼有權訪問自己的成員。其他包內的類不能剛一上來就說:“嗨,我們是會員。”並且還想看到protected,包訪問許可權和private成員。取得對某成員的訪問權的唯一途徑是:


   1、使該成員成為public。於是,無論是誰,無論在哪裡,都可以訪問該成員。


   2、通過不加訪問許可權修飾詞並將其他類放置於同一個包內的方式給成員賦予包訪問權。於是包內的其他類也就可以訪問該成員了。(通俗的說就是,A成員在A類中沒有特定的訪問修飾符修飾,那麼在同一個包下的B類也有許可權訪問A類中的A成員)


   3、在繼承技術中您會看到繼承而來的類既可以訪問public成員也可以訪問protected成員(但訪問private成員卻不行)。只有在兩個類都處於同一個包內時,它才可以訪問包訪問許可權的成員但現在不必擔心繼承和protected。


   5、提供訪問器(accessor)和變異器(mutator)方法(也稱作get/set方法),以讀取和改變數值。對OOP而言,這是最優雅的方式,而且這也是JavaBeans的基本原理。