javaのアクセス修飾子
アクセス修飾子とは
Javaでは、オブジェクトの属性(変数)に不正な値が入らないように外部からのアクセスに制限をかけることが出来る。
また変数だけでなくメソッドや、クラス全体に対してもアクセス制限をすることが出来る。
これにはクラスを記述するときにクラスとメンバに割り当てるアクセス修飾子を使用。
Java言語ではpublic、protected、privateという3つの明示的なアクセス修飾子と、 何も修飾子を指定しなかった場合に強制的に使われるデフォルト修飾子が用意されている。
これらのアクセス修飾子はローカル変数には使用することが出来ない。
自分一人でやっていて不都合がないならすべてpublicでも問題なし。
実際のシステム開発の現場で大人数でやる場合にprivateやprotectedなどを使い分ける。
アクセス修飾子 | クラス | サブクラス | パッケージ | その他 | 説明 |
---|---|---|---|---|---|
private | ○ | × | × | × | Java要素(クラスまたはクラスメンバ)のアクセス制限は最も厳しくなり、 自クラス以外は一切アクセス不可。private修飾子はクラスメンバにのみ適用。 |
デフォルト | ○ | × | ○ | × | ある要素に何も指定しなかった場合、その要素のアクセスはデフォルトとみなす。デフォルト修飾子 を表すキーワードはなし。 デフォルトの場合、同じパッケージ内のクラスから利用可能。 |
protected | ○ | ○ | ○ | × | 同じパッケージ内のクラスから利用可能。 同じクラスを継承したすべてのサブクラスから利用可能。 異なるパッケージでもサブクラスからであれば利用可能。 なお、protected修飾子をクラス宣言に対して使用することは出来ない。 |
public | ○ | ○ | ○ | ○ | Java要素のアクセス制限は最も緩くなる。 publicとして宣言したクラス、変数、メソッドは、Javaアプリケーション内のどこからでもアクセス可能。 ただし、一般的に、インスタンス変数をpublicとして宣言することはオブジェクト指向プログラミングの慣習としては勧められていない。 インスタンス変数は必ずメソッドを通じてアクセスすべきである。 |