2011-11-19 63 views

回答

32

包。它們對同一包中的其他類可見。

FWIW,我通常使用這些我自己的無操作@package註解,只是爲了說清楚,我知道我在做什麼 - 我不只是忘了什麼東西。儘管這是默認設置,但在高質量代碼中使用軟件包訪問的次數可能低於其他三種可能性 - 有一個很大的例外:

在某些樣式的單元測試中,希望能夠訪問方法或領域通常是私人的。提供訪問的一種方法是將它們設置爲包訪問,並將單元測試類放入同一個包(但通常位於不同的「測試」目錄樹中)。一些開發人員認爲這是不好的做法 - 一般來說,在測試中使用私有(或測試用包)方法是不好的。

+4

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html – LukeH

23

在Java中有公有,保護包(默認值),以及私人能見度;從最可見到最小的順序排列。

如果您不指定它,默認情況下可見性爲

package mytest.myvisibility; 

public class MyClass 
{ 
    public int myPublicInt; // visible to all 
    protected myProtectedInt; // visible to subclasses of MyClass and to other members of the mytest.myvisibility package 
    int myPackageInt; // visible only to other members of the mytest.myvisibility package 
    private int myPrivateInt; // visible only to MyClass objects. 
} 
+0

這不完全真實的(見由@LukeH以上提供的Oracle的文檔)。受保護的項目在當前包中也可見。 – Kloe2378231

+3

更新 - 詳細闡述了「包裝」的可見性,並在說明和代碼示例中使可見性順序保持一致。 –

相關問題