ホームページ  >  記事  >  Java  >  Java のアクセス修飾子

Java のアクセス修飾子

WBOY
WBOYオリジナル
2024-08-30 15:59:15350ブラウズ

皆さんご存知のとおり、Java は世界でトップクラスのプログラミング言語の 1 つです。過去 20 年間、何十億ものデバイスがそれに依存しています。 Java は、高速で信頼性が高く、安全なマルチプラットフォーム言語です。 Java は、デバイスに Java ランタイム (JRE) が搭載されている限り、どのデバイスでも実行できるため、マルチプラットフォームで高速で信頼性が高くなります。アクセス修飾子は Java のプロパティであり、マルチプラットフォーム全体で安全になります。 Java は、アクセス修飾子プロパティを使用して、クラスレベルの安全性 (カプセル化中) をプログラマに提供します。この本によると、クラスは Java でオブジェクトを構築するための設計図であり、Java はオブジェクト指向言語であるため、クラスはプログラムの「構成要素」になります。アクセス修飾子は、クラスがさまざまなパッケージ内の特定のクラスとそのフィールド、コンストラクター、およびメソッドにアクセスする方法を指定します。クラス、フィールド、コンストラクター、およびメソッドには、4 つの異なる Java アクセス修飾子のいずれかを指定できます。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

  • プライベート
  • 公開
  • 保護されています
  • デフォルト – キーワードは必要ありません。

Java のさまざまなアクセス修飾子

次の表は、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.デフォルト

クラス、データメンバー、変数がアクセス修飾子を使用せずに宣言されている場合、「デフォルト」のアクセス修飾子に設定されます。 「デフォルト」アクセス修飾子は、任意のクラス内のコードが同じパッケージ内のプログラム全体にアクセスできることを意味します。

  • このアクセス修飾子は、同じパッケージ内でのみ機能します。
  • 「デフォルト」アクセス修飾子は、同じパッケージ内でのみアクセスできるため、パッケージ アクセス修飾子とも呼ばれることがあります。
  • スーパークラスのメソッド、データ メンバー、変数 (フィールド) がクラス内で「デフォルト」アクセス修飾子でマークされている場合、サブクラスはこれらのメソッド、データ メンバー、変数 (フィールド) にアクセスできませんでした。スーパークラスと同じパッケージ。

例 #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();
}
}

出力:

コンパイル時エラー。

2.保護されています

ユーザーがこのアクセス修飾子を使用する場合、構文「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!

3.公開

ユーザーは、「public」アクセス修飾子を使用してクラス、メソッド、コンストラクター、およびインターフェースを宣言できます。これにより、パッケージ内または別のパッケージ内の任意のクラス、メソッド、コンストラクター、インターフェースによってアクセスできます。

  • このアクセス修飾子には、すべての修飾子の中で Boundless が含まれています。
  • クラス、メソッド、またはパッケージが「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!

4.プライベート

メソッドまたは変数が「プライベート」アクセス修飾子としてマークされている場合、その同じクラス内のコードはそれらのメソッドと変数にのみアクセスできます。

ユーザーはプログラム内で「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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:Javaの抽象クラス次の記事:Javaの抽象クラス