第3章 アクセス修飾子とカプセル化
3.2 アクセス修飾子について
これまでクラスの構成要素であるフィールド変数やメソッドに「public」や「private」といったキーワードを設定してきました。これらを総称して「アクセス修飾子」と呼びます
アクセス修飾子は4つの種類があります。
① public :全ての場所からアクセスが可能 ② protected :同じパッケージ及び継承するサブクラスからしかアクセスできない ③ デフォルト(修飾子なし) :同じパッケージに属するクラス内からしかアクセスできない ④ private :自分自身が含まれるクラス内からしかアクセスできない
1~4のアクセス修飾子のアクセス可能範囲をまとめると以下のようになります。
表からも分かるようにアクセス修飾子は以下の並びで左から右へ行くとアクセス制限が強くなっていきます。
この違いをきちんと理解した上で、メンバにアクセス制限を設定する必要があります。
図 3.2.1:アクセス修飾子別のアクセスイメージ
これまで学習してきた範囲ではクラス内のメンバだけではなく、クラス(class)そのものにもアクセス修飾子がついていたことに気がつくと思います。3.1.3項で紹介したPrivateMember.javaを例に見てみましょう。
クラス(class)にアクセス修飾子を定義する場合は、「デフォルト」もしくは「public」の2つのみ設定できます。クラスの基本目的は他のクラスから利用するためのものであり、厳しくアクセス制限をしてしまう意味がないため、どこからでもアクセスが可能な「public」または、同一パッケージ内からアクセス可能な「デフォルト」のみ定義することができます。
結果としてJavaでは、クラス(class)やクラス内のメンバ(フィールド変数、メソッド)にアクセス修飾子を必要に応じて定義することにより、細かいレベルでアクセス制限ができる仕組みになっています
ポイント
- privateメンバには、他のクラスから直接アクセスはできない。
- publicメンバには、全てのクラスからアクセスできる。