Javaのアクセス修飾子の説明

アクセス修飾子とは何ですか?

人々があなたのプロパティのいくつかにアクセスする方法を定義したいと思ったことはありますか?あなたは誰にもあなたの下着を使わせたくないでしょう。ただし、親しい友人や親戚はセーターや車を使用できます。

所有物へのアクセスレベルを設定する方法と同様に、Javaもアクセスを制御します。変数、メソッド、およびクラスにアクセスする他のクラスに応じて、それらのアクセスレベルを定義する必要があります。

Javaは、4つのレベルのアクセス修飾子を提供します。これは、変数、メソッド、またはクラスへのアクセスを4つの方法で変更できることを意味します。これらの4つの方法は、プライベート、パブリック、保護、およびデフォルトです。

これらのアクセス修飾子は、フィールド、メソッド、およびクラスに適用できます(クラスは特殊なケースであり、この記事の最後で説明します)。Access Levelsそれぞれの概要1を簡単に説明しますAccess Modifier

アクセス修飾子テーブルリファレンス:

アクセス修飾子テーブル

プライベートアクセス修飾子

変数またはメソッドに、それが作成されたクラスでのみアクセスできるようにします。変数またはメソッドを作成したクラス以外のクラスは、それにアクセスできません。これはあなたの内臓によく似ています。それらは所有者のみがアクセスできます。変数またはメソッドをプライベートにするには、変数またはメソッドタイプの前にprivateキーワードを追加するだけです。コーディング例でprivateを使用しましょう。銀行がローンに10%の金利を提供したい場合、int int_rate;他のクラスがそれにアクセスして変更しようとしないように、金利変数(仮定します)が非公開のままになるようにします。例えば;

private String name;

上記の例では、nameという変数を作成し、それが作成されたクラス内でのみアクセスできるようにします。

メソッドの別の例は

private void setAge(){ System.out.println("Set Age"); }

上記の例では、メソッドsetAgeは、それが作成されたクラス内でのみアクセス可能であり、他の場所ではアクセスできないことを保証します。

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

パブリックアクセス修飾子は、プライベートアクセス修飾子の正反対です。クラス、メソッド、または変数はpublicとして宣言でき、どのクラスからでもアクセスできることを意味します。パブリックアクセス修飾子は、誰でも入学を求めて入学できる公立学校に例えることができます。

パブリッククラス、メソッド、または変数には、他のクラスからいつでもアクセスできます。

たとえば、クラスをパブリックとして宣言するには、必要なのは次のとおりです。

public class Animal{ }

そのため、Animalクラスには他のクラスからアクセスできます。

public int age; public int getAge(){ }

上記は、変数とメソッドをパブリックとして指定する方法です。

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

デフォルトのアクセス修飾子は、キーワードがないという点で他のすべてのアクセス修飾子とは異なります。デフォルトのアクセス修飾子を使用するには、他のアクセス修飾子を使用しないだけです。つまり、デフォルトのアクセス修飾子を使用しているだけです。

たとえば、クラスのデフォルトのアクセス修飾子を使用するには、

class Bird{ }

これは基本的に、デフォルトのアクセス修飾子を使用していることを意味します。デフォルトのアクセス修飾子を使用すると、同じパッケージ内の他のクラスから変数、メソッド、またはクラスにアクセスできます。パッケージは、ファイルディレクトリ内の関連するクラスのコレクションです。パッケージの詳細については、パッケージのセクションを確認してください。

デフォルトのアクセス修飾子を使用するように宣言された変数、メソッド、またはクラスは、宣言されたパッケージの外部にある他のクラスからはアクセスできません。

int age; void setNewAge(){ }

上記は、変数またはメソッドのデフォルトのアクセス修飾子を使用するいくつかの方法です。デフォルトのアクセス修飾子にはキーワードがないことを忘れないでください。他に3つのアクセス修飾子がないということは、デフォルトのアクセス修飾子を使用していることを意味します。

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

保護されたアクセス修飾子は、デフォルトのアクセス修飾子と密接に関連しています。保護されたアクセス修飾子には、デフォルトのアクセス修飾子のプロパティがありますが、少し改善されています。

保護されたアクセス修飾子を使用するのは、変数とメソッドだけです。少しの改善点は、変数またはメソッドが宣言されたクラスパッケージの外部のクラスが、前述の変数またはメソッドにアクセスできることです。ただし、これはクラスから継承する場合にのみ可能です。

保護された変数またはメソッドを表示できる別のパッケージのクラスは、変数またはメソッドを作成したクラスを拡張している必要があります。

継承の利点がない場合、デフォルトのアクセス修飾子には、保護されたアクセス修飾子とまったく同じアクセス権があることに注意してください。

保護されたアクセス修飾子の使用例を以下に示します。

protected int age; protected String getName(){ return "My Name is You"; }

クラスのアクセス修飾子

デフォルトでは、クラスは2つの修飾子のみを持つことができます。

  • 公衆
  • 修飾子なし(デフォルトの修飾子)

つまり、クラスをprivateまたはに設定することはできませんprotected

これは論理的ですが、なぜプライベートクラスを作成したいのですか?他のクラスはそれを使用できません。ただし、あるクラスを別のクラスに埋め込むことができる場合もあります。これらの特別なクラス、はinner classes、プライベートまたは保護に設定して、周囲のクラスのみがアクセスできるようにすることができます。

public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }

上記の例では、Carクラスのみがクラスを使用できますEngine。これは場合によっては便利です。

他のクラスは、意味がないため、protectedまたはprivateに設定することはできません。protectedアクセス修飾子は、物事を行うために使用されるpackage-privateサブクラスにアクセスできるようにするが、オプション付き。Javaには「サブパッケージ」や「パッケージ継承」などの概念はありません。