Java では、Access 修飾子は、クラス、コンストラクター、変数、メソッド、またはデータ メンバーのスコープを制限するのに役立ちます。要素で使用されるアクセス修飾子に応じて、セキュリティやアクセシビリティなどをユーザーに提供します。この記事では、Java アクセス修飾子、その種類、アクセス修飾子の使用法について学びましょう。
Java のアクセス修飾子の種類
Java では次の 4 種類のアクセス修飾子を使用できます。
- デフォルト – キーワードは必要ありません
- プライベート
- 保護されています
- 公共
1. デフォルトのアクセス修飾子
クラス、メソッド、またはデータ メンバーにアクセス修飾子が指定されていない場合、 デフォルト デフォルトではアクセス修飾子。アクセス修飾子を使用して宣言されていない、つまりデフォルトのアクセス修飾子を持つデータ メンバー、クラス、またはメソッドはアクセス可能です 同じパッケージ内のみ 。
この例では、2 つのパッケージを作成し、パッケージ内のクラスにはデフォルトのアクセス修飾子が設定され、1 つのパッケージのクラスに 2 番目のパッケージのクラスからアクセスしようとします。
プログラム 1:
ジャワ // Java program to illustrate default modifier package p1; // Class Geek is having Default access modifier class Geek { void display() { System.out.println('Hello World!'); } }>
プログラム 2:
レル対セントスジャワ
// Java program to illustrate error while // using class from different package with // default modifier package p2; import p1.*; // This class is having default access modifier class GeekNew { public static void main(String args[]) { // Accessing class Geek from package p1 Geek obj = new Geek(); obj.display(); } }> 出力:
Compile time error>
2. プライベートアクセス修飾子
プライベートアクセス修飾子はキーワードを使用して指定されます。 プライベート 。プライベートとして宣言されたメソッドまたはデータ メンバーのみがアクセス可能です クラス内で その中で宣言されています。
- 他の のクラス の 同じパッケージにはアクセスできません このメンバーたち。
- 最上位のクラスまたはインターフェイスはプライベートとして宣言できません。
- private は、それを囲んでいるクラス内でのみ表示されることを意味します。
- protected は、それを囲んでいるクラスとサブクラス内でのみ表示されることを意味します。
したがって、クラスへの適用に関するこれらの修飾子は、入れ子になったクラスにのみ適用され、トップレベルのクラスには適用されません。
この例では、同じパッケージ p1 内に 2 つのクラス A と B を作成します。クラス A のメソッドをプライベートとして宣言し、クラス B からこのメソッドにアクセスして結果を確認してみます。
TCP と IP モデルジャワ
// Java program to illustrate error while // Using class from different package with // Private Modifier package p1; // Class A class A { private void display() { System.out.println('techcodeview.com'); } } // Class B class B { public static void main(String args[]) { A obj = new A(); // Trying to access private method // of another class obj.display(); } }> 出力:
error: display() has private access in A obj.display();>
3. 保護されたアクセス修飾子
保護されたアクセス修飾子は、キーワードを使用して指定されます。 保護された 。
保護されていると宣言されたメソッドまたはデータ メンバーは次のとおりです。 同じパッケージ内、または異なるパッケージ内のサブクラス内でアクセスできます。
この例では、2 つのパッケージ p1 と p2 を作成します。 p1 のクラス A は、p2 でアクセスできるように公開されます。クラス A のメソッド表示は保護されており、クラス B はクラス A から継承され、クラス B のオブジェクトを作成することによってこの保護されたメソッドにアクセスします。
プログラム 1:
ジャワ // Java Program to Illustrate // Protected Modifier package p1; // Class A public class A { protected void display() { System.out.println('techcodeview.com'); } }>
プログラム 2:
// Java program to illustrate // protected modifier package p2; // importing all classes in package p1 import p1.*; // Class B is subclass of A class B extends A { public static void main(String args[]) { B obj = new B(); obj.display(); } }> 出力:
techcodeview.com>
パブリックアクセス修飾子
public アクセス修飾子は、キーワードを使用して指定されます。 公共 。
メガバイトとギガバイトの違いは何ですか
- public アクセス修飾子には、 最も広い範囲 他のアクセス修飾子の中でも特に。
- public として宣言されたクラス、メソッド、またはデータ メンバーは、 どこからでもアクセス可能 プログラム内で。パブリック データ メンバーの範囲に制限はありません。
プログラム 1:
ジャワ // Java program to illustrate // public modifier package p1; public class A { public void display() { System.out.println('techcodeview.com'); } }> プログラム 2:
ジャワ package p2; import p1.*; class B { public static void main(String args[]) { A obj = new A(); obj.display(); } }> 出力:
techcodeview.com>
重要な点:
- 他のプログラマがあなたのクラスを使用する場合は、特定のメンバーにとって意味のある最も制限的なアクセス レベルを使用するようにしてください。特別な理由がない限り、プライベートを使用してください。
- 定数を除いてパブリックフィールドは避けてください。
Javaでアクセス修飾子を使用するアルゴリズム
Java でアクセス修飾子を使用するための基本的なアルゴリズムを次に示します。
- クラスを定義します。 管理するオブジェクトを表すクラスを作成します。
- インスタンス変数を定義します。 クラス内で、管理するデータを表すインスタンス変数を定義します。
- アクセス修飾子を指定する: インスタンス変数ごとに、変数の可視性を決定するアクセス修飾子を指定します。 Java の 3 つの主なアクセス修飾子は、プライベート、プロテクト、パブリックです。
- クラス内でのみアクセスできる変数には private を使用します。 クラスの外部から変数にアクセスできないようにするには、private アクセス修飾子を使用します。これは最も制限的なアクセス修飾子であり、最高レベルのカプセル化を提供します。
- クラスとそのサブクラス内でアクセスできる必要がある変数には protected を使用します。 注: クラスおよびそのサブクラス内から変数へのアクセスを許可する場合は、protected アクセス修飾子を使用します。これはプライベートより制限が緩く、ある程度の継承を提供します。
- どこからでもアクセスできる変数には public を使用します : どこからでも変数にアクセスできるようにしたい場合は、public アクセス修飾子を使用します。これは最も制限の少ないアクセス修飾子であり、最小限のカプセル化を提供します。
- アクセサー メソッドとミューテーター メソッドを使用して、変数へのアクセスを管理します。 変数にアクセスして変更するには、変数にパブリック アクセス修飾子がある場合でも、アクセサー (ゲッター) メソッドとミューテーター (セッター) メソッドを使用します。これにより、抽象化レベルが提供され、コードの保守性とテスト性が向上します。
アクセス修飾子に関するよくある質問
1. Java のアクセス修飾子とは何ですか?
Java のアクセス修飾子は、クラス内のメソッド、コンストラクター、フィールド、およびメソッドの使用を制御するために使用されるキーワードです。
2. Java の void とは何ですか?
Java の void は、メソッドで戻り値を指定しないことを指定するために使用されます。
3. Java の 12 個の修飾子は何ですか?
12 Java の修飾子は、public、private、protected、default、final、synchronized、abstract、native、strictfp、transient、および volatile です。