アクセス制御とは何ですか
アクセス制御は、(Javaの男を使用して)クライアントプログラマに(そのような人々のJavaの基礎となる実装を書き込みなど)、開発者が利用可能なものを示し、どのようなアクセスを制御することはできませんです。パブリック、保護、パッケージアクセス(キーワードなし/デフォルト)とプライベート:アクセスは、4つのレベルに分かれています
なぜアクセス制御があるはずです
私たちは、コードを書くとき最初、より多くの注目は、この機能を実現することができないということです。長い時間が、振り返ってみると、私たちは、リファクタリングコードに私たちが望む今回その機能を達成するためのより良い方法を見つけるかもしれません。復興には、コードをより読みやすい、保守、理解しやすいように書き換えられています。
しかし、私たち自身のコードでは、一方で自由に変更することができますに他の人がこのプロジェクトを使用するために、我々は、我々は、コードを変更したい、誰もがすべてのものへのアクセス権を持っているために、このプロジェクトを使用したくない一方であります彼らはどのように達成するかを気にしないので、変更なし、唯一の使用方法を気に。つまり、基礎となるコードを変更するために使用されるコードを維持するときに、同じ方法で、別の人が同じ電源の異なるアイデンティティを持っているよう。これまでのアクセス制御を使用するには、Javaから別の領域に同じ事をままに物事を変更します。
どのようにアクセス制御
パブリック、保護、パッケージアクセス(キーワードなし/デフォルト)とプライベートクラス、インタフェース、メソッド、変数を変更するために使用
(クラスとインタフェースは唯一の公共または非キーワードは、あなたがプライベートまたは保護することはできませんすることができます。)
図は、スコープ(現在のクラス、パッケージ、親子)Yに対応する4つのキーワードは、アクセスを表し、Nはアクセスがないことを意味しています
1、公共
公共の意味が公開されて、それがすることができ、すべてのクラスにアクセスします。
各符号化ユニット(Javaソースコードファイル/接尾辞.javaファイル)が持つことができ、ゼロまたは1つのパブリッククラスを。
2、保護されました
また、継承された保護されたアクセスとして知られています
あなたはときにこのサブクラスの継承メンバーを使用したい(プライベートではありません)が、このメンバーあまりにも公共にしたくないとき(公開しない)、使用が保護されました。
(しかし、また2例:
Ⅰ、同じパッケージ内のサブクラスと親クラスは、その後、保護、および他の変数は、パッケージへのアクセスの同じタイプにすることができます。
Ⅱ、サブクラスおよびスーパークラスが同じパッケージでない、すなわち、ときに新たなパケットBを継承するクラスAのパケットから、サブクラス公衆へのアクセスのみ。
)
(さらに、保護は、パッケージへのアクセス、他のクラスが同じパッケージ内に保護された要素にアクセスできるようにする手段を提供します)
3、デフォルト
デフォルトはデフォルトで、このキーワードのデフォルトは、同一パッケージ内でアクセスできるキーへの書き込みアクセスは、異なるパッケージを訪問していないではないでしょう。
4、プライベート
プライベートプライベート、キーワード修飾法で、変数は唯一のそのクラスにアクセスすることができ、そして訪問に他のクラス、パブリックgetterメソッドは、「パッケージ」をして関与するこの部分を使用するように変更することができます。
3、何のクラスには、パブリックまたはキーワードは、プライベートまたは保護することはできませんになることはできません。他の人がクラスにアクセスしたくない場合は、次のことができますすべて、コンストラクタのプライベートとして指定することにより、クラスの静的メンバー内のオブジェクト(シングルトンデザインパターンを)クラスのオブジェクトを作成し、または作成するために、他の人々を防ぎます
class example{
private static example ex=new example();
private example(){}
public static example access(){
return ex;
}
}
//这样的情况下,我们可以进一步改进,记录下创建了多少个对象