Javaのアクセス修飾子を使いこなそう:public, private, protectedの違い

この記事は約3分で読めます。

アクセス修飾子とは?

Javaのアクセス修飾子とは、クラス、変数、メソッドなどが、どこからアクセスできるかを指定するためのキーワードです。主なアクセス修飾子として、publicprotectedprivateの3種類があります。

各アクセス修飾子の意味と違い

public

  • どこからでもアクセス可能: 同じプロジェクト内の他のクラスはもちろん、異なるパッケージのクラスからもアクセスできます。
  • 外部から自由に操作できる: クラスの外部から、publicな変数の値を変更したり、publicなメソッドを呼び出したりできます。
  • 公開APIのインターフェース: 外部に対して提供する機能を定義する際に使用されます。

protected

  • 同一パッケージ内とサブクラスからアクセス可能: 同じパッケージ内のクラスや、そのクラスを継承したサブクラスからアクセスできます。
  • 継承を意識したアクセス制御: サブクラスでメソッドをオーバーライドしたり、protectedな変数にアクセスしたりすることができます。

private

  • 同一クラス内からのみアクセス可能: 他のクラスからはアクセスできません。
  • カプセル化を実現: クラスの内部状態を外部から隠蔽し、データの整合性を保つことができます。

アクセス修飾子の使い分け

  • public: 外部から自由にアクセスさせたいメソッドや変数に使用する。
  • protected: サブクラスでオーバーライドしたいメソッドや、サブクラスからアクセスさせたい変数に使用する。
  • private: クラス内部でしか使用しない変数やメソッドに使用する。

public class Person {
    public String name; // どこからでもアクセス可能
    private int age; // このクラス内でのみアクセス可能

    public void setName(String name) { // 名前を設定するメソッド
        this.name = name;
    }

    protected int getAge() { // サブクラスからアクセス可能
        return age;
    }
}

アクセス修飾子の選択基準

  • カプセル化: データを保護し、プログラムの安定性を高めるために、privateを積極的に使用します。
  • 継承: サブクラスでオーバーライドしたいメソッドはprotectedにします。
  • 外部からのアクセス: 外部から自由にアクセスさせたいメソッドや変数はpublicにします。

まとめ

アクセス修飾子は、オブジェクト指向プログラミングにおいて、クラスの設計やデータの隠蔽に重要な役割を果たします。適切なアクセス修飾子を選択することで、より保守性の高いプログラムを作成することができます。

コメント

タイトルとURLをコピーしました