アクセス修飾子とは?
Javaのアクセス修飾子とは、クラス、変数、メソッドなどが、どこからアクセスできるかを指定するためのキーワードです。主なアクセス修飾子として、public
、protected
、private
の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にします。
まとめ
アクセス修飾子は、オブジェクト指向プログラミングにおいて、クラスの設計やデータの隠蔽に重要な役割を果たします。適切なアクセス修飾子を選択することで、より保守性の高いプログラムを作成することができます。
コメント