アクセス修飾子

アクセス修飾子は、クラス、メンバーフィールド、メソッドの他クラスへの公開範囲を決める修飾子を意味します。

アクセス修飾子は、public,private,protected,省略の4つが存在します。

アクセス修飾子の説明

アクセス修飾子 説明
public 全てのクラスが、利用できる公開範囲を意味します。
省略 同一のパッケージ内のクラスから利用できる公開範囲を意味します。
protected 自クラス及び自クラスを継承した子クラスのみ利用できる公開範囲を意味します。
private 自クラスのみ利用できる公開範囲を意味します。

イメージ図のように左側のクラスを親クラス、右側を子クラスとしています。
ブルー枠が親クラスで定義したフィールド、プロパティ、メソッドです。
緑色枠が子クラスで定義したフィールド、プロパティ、メソッドです。

継承した子クラスは、親クラスのprivate以外のフィールド、プロパティ、メソッドを引継ぎ、利用できるようになります。

アクセス修飾子の利用対象

  public 省略 protected private
クラス × ×
フィールド
メソッド

左図の一覧表からわかるようにクラスの宣言部には、public又は省略しか利用できません。

アクセス修飾子の基本ポリシー

アクセス修飾子は、クラス設計と同様に正しい公開範囲を決めるには、数年の経験を要します。

アクセス修飾子をメンバーメソッドに対してpublicを付与するケースは比較的珍しいケースです。
メンバーフィールドに関しては、基本privateを付与しメンバーフィールドをカプセル化します。

メンバーフィールドを公開したい場合には、getter/setterを作成しプロパティとして公開します。

メソッドに関しては、主機能として他クラスへ提供するメソッドのみpublicにして下さい。

その他のメソッドに関しては、privateをデフォルトとして、子クラスで必要になった場合には、protectedを利用します。

全てをpublicにしたクラスは、丸見えクラスでオブジェクト指向言語と言い難いです。