2011-11-19 12 views

答えて

32

パッケージ。これらは同じパッケージ内の他のクラスから見えます。

FWIW、私は通常、私が何をしているかを知っていることを明確にするために、自分自身のノーオペレーション@Packageアノテーションを使用しています。デフォルトでは、パッケージアクセスは他の3つの可能性よりも高品質のコードで使用される可能性が低いでしょう.1つの大きな例外を除いて:

ユニットテストのスタイルによっては、通常はプライベートであるメソッドまたはフィールド。アクセスを提供する1つの方法は、それらをパッケージアクセスに設定し、ユニットテストクラスを同じパッケージに入れます(通常は別の "テスト"ディレクトリツリーにあります)。いくつかの開発者はこれが悪い習慣だと考えています。一般的に、テストでプライベート(またはテスト用パッケージ)メソッドを使用するのは悪いことです。

+4

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

23

パブリック、プロテクト、パッケージ(デフォルト)、プライベートな可視性があります。最も目に見えるものから最も少ないものへと順序付けられる。

デフォルトでは、可視性はパッケージです。

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

が更新されました - 「パッケージ」の可視性について詳述され、説明とコードサンプルで可視性の順序が一致しました。 –

関連する問題