クラスやメソッドの公開範囲を制御する「アクセス修飾子」とは?
Javaでは、クラスやメソッド、フィールドなどのアクセス可能な範囲を指定するために、アクセス修飾子を使います。
設計の整理や情報隠蔽(カプセル化)を行ううえでとても重要な概念です。
アクセス修飾子の種類と意味
修飾子 |
意味 |
アクセス可能な範囲 |
public |
公開 |
すべてのクラスからアクセス可能 |
private |
非公開 |
定義されたクラス内からのみアクセス可能 |
protected |
継承とパッケージ内 |
同一パッケージ内 + サブクラス |
default(修飾子なし) |
パッケージ内公開 |
同一パッケージ内からアクセス可能 |
使用例
public class Person {
public String name; // どこからでもアクセス可
private int age; // Personクラスの中だけ
protected String address; // 同一パッケージかサブクラス
String email; // (default)同一パッケージ内
}
アクセス範囲の図解(簡略)
◎:アクセス可能 / ×:アクセス不可
アクセス元\修飾子 |
public |
protected |
default |
private |
同一クラス |
◎ |
◎ |
◎ |
◎ |
同一パッケージ |
◎ |
◎ |
◎ |
× |
別パッケージのサブクラス |
◎ |
◎ |
× |
× |
完全に別クラス |
◎ |
× |
× |
× |
設計のポイント
- private:外部に触らせたくない内部処理やデータに
- public:外部から自由に使わせたいときに
- protected:サブクラスには使わせたいが外部には隠したいときに
- default:パッケージ単位でまとめて使いたいときに
まとめ
アクセス修飾子は、クラス・メソッド・フィールドの公開範囲を制御するためのキーワードです。
適切なアクセスレベルを設定することで、安全で保守性の高いプログラムを実現できます。
設計時には「誰に使わせたいか?」を意識して選びましょう!