Javaのアクセス修飾子について

Javaのアクセス修飾子について

Javaのアクセス修飾子について

Javaにおけるアクセス修飾子(アクセスコントロール)は、クラス、メソッド、フィールドのアクセスレベルを指定するために使用されます。 アクセス修飾子を適切に使用することで、カプセル化を強化し、コードのセキュリティと保守性を高めることができます。

1. アクセス修飾子の種類

Javaには、以下の4種類のアクセス修飾子があります:

  • public: どこからでもアクセス可能
  • protected: 同一パッケージ内またはサブクラスからアクセス可能
  • private: 同一クラス内からのみアクセス可能
  • default(指定なし): 同一パッケージ内からのみアクセス可能

2. public

public修飾子がついたメンバー(クラス、メソッド、フィールド)は、どこからでもアクセス可能です。最も広範囲にアクセスできるため、外部からのアクセスを許可する際に使用します。

public class MyClass {
    public int number; // 他のクラスからアクセス可能
}
    

3. protected

protected修飾子は、同一パッケージ内または、サブクラスからアクセス可能です。外部クラスから直接アクセスできないようにしつつ、継承したクラスからのアクセスは許可する場合に使用します。

public class ParentClass {
    protected int number; // サブクラスからアクセス可能
}

public class ChildClass extends ParentClass {
    public void display() {
        System.out.println(number); // 継承元のprotectedメンバーにアクセス可能
    }
}
    

4. private

private修飾子は、同一クラス内からのみアクセス可能です。外部からアクセスできないように完全に制限するため、データの隠蔽やカプセル化を強化する際に使用します。

public class MyClass {
    private int number; // 同一クラス内からのみアクセス可能

    private void display() {
        System.out.println(number);
    }
}
    

5. default(アクセス修飾子なし)

アクセス修飾子を指定しない場合、デフォルトでdefaultとなり、同一パッケージ内からのみアクセス可能になります。外部パッケージからのアクセスはできません。

class MyClass { // default修飾子、同一パッケージ内からのみアクセス可能
    int number;

    void display() {
        System.out.println(number);
    }
}
    

6. アクセス修飾子の組み合わせ

Javaでは、複数のアクセス修飾子を組み合わせて使用することはできません。例えば、private publicのような組み合わせは無効です。

7. クラスにおけるアクセス修飾子

クラス自体にもアクセス修飾子を付けることができます。クラスに対するアクセス修飾子は、外部クラスからそのクラスをインスタンス化する際に影響します。

  • publicクラスはどこからでもインスタンス化可能
  • defaultクラス(修飾子なし)は、同一パッケージ内からのみインスタンス化可能
  • privateクラスはインスタンス化不可能(通常は内部クラスに使用)

8. まとめ

アクセス修飾子は、Javaプログラムにおいて重要な役割を果たします。publicprotectedprivate、およびデフォルトのアクセス制御を使い分けることで、クラスやメソッドの可視性を適切に制御できます。 カプセル化を適切に行うために、アクセス修飾子を効果的に使用することが大切です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です