logo

Java のアクセス修飾子

  1. プライベートアクセス修飾子
  2. 民間コンストラクターの役割
  3. デフォルトのアクセス修飾子
  4. 保護されたアクセス修飾子
  5. パブリックアクセス修飾子
  6. メソッドオーバーライドを使用したアクセス修飾子

Java には 2 種類の修飾子があります。 アクセス修飾子 そして 非アクセス修飾子

Java のアクセス修飾子は、フィールド、メソッド、コンストラクター、またはクラスのアクセシビリティまたはスコープを指定します。アクセス修飾子を適用することで、フィールド、コンストラクター、メソッド、クラスのアクセス レベルを変更できます。

Java アクセス修飾子には 4 つのタイプがあります。

    プライベート: private 修飾子のアクセス レベルはクラス内のみです。クラス外からはアクセスできません。デフォルト: デフォルト修飾子のアクセス レベルはパッケージ内のみです。パッケージ外からはアクセスできません。アクセス レベルを指定しない場合、それがデフォルトになります。保護されています: 保護された修飾子のアクセス レベルは、パッケージ内および子クラスを介してパッケージの外にあります。子クラスを作らないとパッケージ外からアクセスできなくなります。公共: public 修飾子のアクセス レベルはどこにでもあります。クラス内、クラス外、パッケージ内、パッケージ外からアクセスできます。

static、abstract、synchronized、native、volatile、transient など、アクセス以外の修飾子が多数あります。ここでは、アクセス修飾子のみを学習します。


Java アクセス修飾子を理解する

Java のアクセス修飾子を簡単な表で理解しましょう。

アクセス修飾子クラス内でパッケージ内サブクラスによるパッケージ外のみ外側のパッケージ
プライベート そしてNNN
デフォルト そしてそしてNN
保護されています そしてそしてそしてN
公共 そしてそしてそしてそして

1) プライベート

private アクセス修飾子はクラス内でのみアクセスできます。

レル対セントス

プライベートアクセス修飾子の簡単な例

この例では、2 つのクラス A と Simple を作成しました。クラスにはプライベート データ メンバーとプライベート メソッドが含まれます。これらのプライベート メンバーにはクラスの外部からアクセスしているため、コンパイル時エラーが発生します。

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

民間建設業者の役割

クラス コンストラクターをプライベートにすると、クラスの外部からそのクラスのインスタンスを作成できなくなります。例えば:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

注: クラスは、ネストされたクラスを除き、プライベートまたは保護にすることはできません。


2) デフォルト

修飾子を使用しない場合、次のように扱われます。 デフォルト デフォルトでは。デフォルトの修飾子はパッケージ内でのみアクセスできます。パッケージ外からはアクセスできません。プライベートよりもアクセシビリティが高くなります。ただし、保護されているというよりも制限があり、公開されています。

TCP と IP モデル

デフォルトのアクセス修飾子の例

この例では、pack と mypack の 2 つのパッケージを作成しました。 A クラスはパブリックではないため、パッケージの外部から A クラスにアクセスすることはできません。

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

上記の例では、クラス A とそのメソッド msg() のスコープはデフォルトであるため、パッケージの外部からアクセスすることはできません。


3) 保護されている

保護されたアクセス修飾子 パッケージ内およびパッケージ外からアクセスできますが、継承を通じてのみアクセスできます。

保護されたアクセス修飾子は、データ メンバー、メソッド、およびコンストラクターに適用できます。クラスには適用できません。

デフォルトのモディファよりもアクセシビリティが向上します。

保護されたアクセス修飾子の例

この例では、pack と mypack という 2 つのパッケージを作成しました。パックパッケージのAクラスはパブリックであるため、パッケージの外部からアクセスできます。ただし、このパッケージの msg メソッドは protected として宣言されているため、クラスの外からは継承を介してのみアクセスできます。

メガバイトとギガバイトの違いは何ですか
 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) 公共

パブリックアクセス修飾子 どこでもアクセスできます。他のすべての修飾子の中で最も範囲が広いです。

パブリックアクセス修飾子の例

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

メソッドオーバーライドを使用した Java アクセス修飾子

メソッドをオーバーライドする場合、オーバーライドされたメソッド (つまり、サブクラスで宣言されたメソッド) の制限を厳しくすることはできません。

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

デフォルトの修飾子は、protected よりも制限的です。そのため、コンパイル時にエラーが発生します。