皆さんご存知のとおり、Java は世界でトップクラスのプログラミング言語の 1 つです。過去 20 年間、何十億ものデバイスがそれに依存しています。 Java は、高速で信頼性が高く、安全なマルチプラットフォーム言語です。 Java は、デバイスに Java ランタイム (JRE) が搭載されている限り、どのデバイスでも実行できるため、マルチプラットフォームで高速で信頼性が高くなります。アクセス修飾子は Java のプロパティであり、マルチプラットフォーム全体で安全になります。 Java は、アクセス修飾子プロパティを使用して、クラスレベルの安全性 (カプセル化中) をプログラマに提供します。この本によると、クラスは Java でオブジェクトを構築するための設計図であり、Java はオブジェクト指向言語であるため、クラスはプログラムの「構成要素」になります。アクセス修飾子は、クラスがさまざまなパッケージ内の特定のクラスとそのフィールド、コンストラクター、およびメソッドにアクセスする方法を指定します。クラス、フィールド、コンストラクター、およびメソッドには、4 つの異なる Java アクセス修飾子のいずれかを指定できます。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
次の表は、Java アクセス修飾子をプログラムに適用する方法をまとめたものです。
Modifiers | Class | Packages | Sub-Class | World |
Private | Y | N | N | N |
Public | Y | Y | Y | Y |
Protected | Y | Y | Y | N |
Default | Y | Y | N | N |
次のセクションで各 Java アクセス修飾子について説明します。
クラス、データメンバー、変数がアクセス修飾子を使用せずに宣言されている場合、「デフォルト」のアクセス修飾子に設定されます。 「デフォルト」アクセス修飾子は、任意のクラス内のコードが同じパッケージ内のプログラム全体にアクセスできることを意味します。
例 #1:
//Java program to show the default modifier. package Test; //Where Class eduCBA is having Default access modifier as no access modifier is specified here class eduCBA { void display () { System.out.println("Hello World!"); } }
出力:
Hello World!
例 #2:
//Java program to show error while using class from different package with default modifier package test2; import test.*; //This class check is having default access modifier class Check { public static void main(String args[]) { //accessing class eduCBA from package test eduCBA obj = new eduCBA(); obj.display(); } }
出力:
コンパイル時エラー。
ユーザーがこのアクセス修飾子を使用する場合、構文「protected」が使用されます。
例:
//Java program to show to protected access modifier package test; //Class eduCBA public class eduCBA { protected void display () { System.out.println("Hello World!"); } } //Java program to show to protected modifier in same sub-classes of different packages package test2; import test.*; //Class pro is subclass of eduCBA class pro extends eduCBA { public static void main(String args[]) { pro obj = new pro(); obj.display(); } }
出力:
Hello World!
ユーザーは、「public」アクセス修飾子を使用してクラス、メソッド、コンストラクター、およびインターフェースを宣言できます。これにより、パッケージ内または別のパッケージ内の任意のクラス、メソッド、コンストラクター、インターフェースによってアクセスできます。
例: –
//Java program to show to public access modifier package test; public class eduCBA { public void display () { System.out.println("Hello World!"); } } package test2; import test.*; class pub { public static void main (String args []) { eduCBA obj = new eduCBA (); obj.display (); } }
出力:
Hello World!
メソッドまたは変数が「プライベート」アクセス修飾子としてマークされている場合、その同じクラス内のコードはそれらのメソッドと変数にのみアクセスできます。
ユーザーはプログラム内で「private」アクセス修飾子を含むスーパークラスを宣言できません。ユーザーがいずれかのクラスでこれを行うと、そのクラスは同じパッケージ内の他のクラスからアクセスできなくなり、そのクラスは役に立たなくなります。ただし、ユーザーは「private」アクセス修飾子を使用してクラス内で変数やメソッドを宣言できるため、誰もそれらの変数やメソッドを利用することはできません。
時々、「プライベート」アクセス修飾子と「保護された」アクセス修飾子が混同されることがありますが、両方とも異なります。
例: –
//Program to show error while using a class from different packages with private modifier. package test; class eduCBA { private void display() { System.out.println("Hello World!"); } } class Check { public static void main (String args[]) { eduCBA obj = new eduCBA(); //make class check to access private method of another class eduCBA. obj.display(); } }
出力:
エラー: display() には eduCBA obj.display() のプライベート アクセスがあります;
Java アクセス修飾子は、プログラムを公開するときに、プログラムに対して特別な優位性を与えます。上記で学習したように、JAVA のさまざまなタイプのアクセス修飾子とその仕様。
これらのいずれかをクラスまたはインターフェイスのアクセスとして使用するときは、アクセスを提供するだけでなくオーバーライドすることにも留意してください。ただし、プログラム内のメソッドのアクセシビリティに関しては常に懸念があります。たとえば、インターフェイスにスーパークラスの「デフォルト」アクセス修飾子が割り当てられている場合、メソッドのサブクラスで使用されるアクセス修飾子をオーバーライドできます。
注: クラスには変数、コンストラクター、フィールド、メソッドが含まれ、インターフェイスには特定のフィールドまたはメソッドが含まれます。以上がJava のアクセス修飾子の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。