以前に説明したようにJavaにはアクセス修飾子が用意されていて、クラス、フィールド、メソッドに適切な「修飾子」を付けることで外部からのアクセスをコントロールすることができます。
(1)復習を兼ねて主な修飾子を以下にまとめます。
・public :すべてのクラスからアクセス可能。
・protected :同一クラス内、同一パッケージ、サブクラスからアクセス可能。
・指定なし :同一クラス内、同一パッケージからアクセス可能。
・private :同一クラス内のみアクセス可能。
protected と 指定なし を見ると「同一パッケージ」という言葉がでてきています。パッケージの機能を利用するには、パッケージ名とフォルダ(ディレクトリ)の階層構造を一致させるのでしたね。
つまり同じフォルダ内にあるパッケージ指定したクラスからアクセス可能だということだったのです。protected の場合はそれに加えてサブクラスからもアクセスできるところが特徴です。
アクセス修飾子を使うことで、直接操作させたくないフィールドや、クラス内だけで使うメソッドを隠すことができます。利用者側からみても使えるものだけ見えればいいので、直接アクセスできないフィールドやメソッドは隠されていたほうがクラスをシンプルに使えます。
(2)クラス、フィールド、メソッドで使える修飾子が異なります。
・public :クラス、インタフェース、フィールド、メソッド
・protected :フィールド、メソッド
・指定なし :クラス、インタフェース、フィールド、メソッド
・private :フィールド、メソッド
クラスでは private や protected は使えないので注意してください。サブクラス、インタフェースについては別の機会に説明します。