Javaでは、 公共 そして プライベート は キーワード として知られている アクセス修飾子 または 指定子 。クラスのスコープやアクセシビリティを制限します。 コンストラクタ 、 変数 、 方法 およびデータメンバー。どちらが適用されるかによって異なります。 Java では、次の 4 種類のアクセス修飾子が提供されます。 パブリック、プライベート、保護された 、 そして デフォルト 。ただし、このセクションでは、公立と私立の 2 つのみについて説明します。また、 パブリックアクセス指定子とプライベートアクセス指定子の違い 例を挙げて。
アクセス修飾子は、他のクラスが特定のフィールドを使用できるか、または特定のメソッドを呼び出せるかどうかを制御します。 ジャワ 2 つのレベルのアクセス制御を提供します。
次の表は、public および private 修飾子によって許可されるメンバーへのアクセス レベルを示しています。
jQueryの親
2 つの違いがまだ明確ではありませんか?アクセス レベルが可視性にどのように影響するかを示す図を示します。次の図は 2 つのパッケージを示しています p1 そして p2 。各パッケージには 2 つのクラスが含まれています デモ1 そして デモ2 (パッケージ p1 内)、および デモ3 そして デモ4 (パッケージ p2 内)。
次の表は、クラスを 1 つずつパブリックおよびプライベートにした場合のクラスの可視性を示しています。上の図では、Demo1 は各アクセス修飾子に対して表示される唯一のクラスです。
詳しく説明しましょう。
パブリックアクセス修飾子
を使用して指定できます。 公共 キーワード。そのスコープまたはアクセシビリティは、他のアクセス指定子の中で最も広いです。 public として宣言された変数、クラス、メソッドには、プログラム内のどこからでもアクセスできます。パブリック データ メンバーの範囲に制限を課すものではありません。メソッドとクラスをパブリックとして宣言すると、次の原則にも違反します。 カプセル化 。最上位クラスでも使用できます。
プライベートアクセス指定子を使用してみましょう Javaプログラム より良い理解のために。
デモ1.java
数字で言えば100万
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
デモ2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
出力
Javatpoint
プライベートアクセス修飾子
public 修飾子の逆です。を使用して指定できます。 プライベート キーワードの後にクラス名 (ネストされたクラスにのみ適用される)、またはメソッド名またはデータ メンバーが続きます。最上位クラスではプライベート アクセス指定子を使用できません。 インターフェース 。 private として宣言された変数、メソッド、クラスには、それらが宣言されているクラス内でのみ、または親クラスを継承することによってのみアクセスできます。これは、Java で最も制限されたアクセス指定子です。カプセル化の高みの形態です。
- できない オーバーライド プライベートとして宣言されたメソッド。
- コンストラクターで private 修飾子を使用する場合、それがサブクラス化されるのを避けます。
- 同じクラス内の他のクラスからクラスを隠します。 パッケージ 。
理解を深めるために、Java プログラムでプライベート アクセス指定子を使用してみましょう。
次の例では、Demo1 と Demo2 という 2 つのクラスを宣言しています。クラス Demo1 では、メソッドを定義しました。 見せる() プライベートとして。クラス Demo2 には、クラス Demo1 のオブジェクトを作成した main() メソッドが含まれています。その後、クラス Demo2 からクラス Demo1 のプライベート メソッドにアクセスしようとしますが、これは不可能です。それでも、プログラムを実行して、どのエラーが表示されるかを確認します。
Javaのプログラム
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
上記のプログラムを実行すると、次のエラーが表示されます。
Javaのパブリックアクセス指定子とプライベートアクセス指定子の違い
public 修飾子と private 修飾子の主な違いは、その可視性です。 Java では、クラス メンバーの可視性を次のように分類します。
- 同じパッケージ内のサブクラス
- 同じパッケージ内の非サブクラス
- 異なるパッケージ内のサブクラス
- 同じパッケージにもサブクラスにも含まれないクラス
どちらを使用すべきでしょうか?
メソッドやプロパティをどこからでも、他のクラスやオブジェクトのインスタンスから見えるようにしたい場合は、パブリック アクセス修飾子を使用する必要があります。メソッドまたはプロパティを独自のクラスでのみ表示できるようにする場合は、private アクセス修飾子を使用します。定数を除いてパブリックフィールドは避けてください。