Javaには、
アクセス修飾子と呼ばれる、メソッドやメンバ変数、クラスなどに
アクセス権を指定するしくみが備わっています。
(メソッドやメンバ変数、クラスといった用語をいきなり使ってしまいましたが、わからない場合は軽く流し読みしてください。詳しくは次章の「Java入門」で解説します。)
アクセス権を指定することで、想定外の操作等によるデータ改ざんを防ぐことができ、より
安全なソースコードを作成することができます。
アクセス修飾子の種類
public 全てのクラスからアクセス可能
protected 同じクラス内、同じパッケージ、サブクラスからアクセス可能
なし 同じクラス内、同じパッケージからアクセス可能
private 同じクラス内のみアクセス可能
表現を変えると、
public は「アクセス制限なし」
protected は「他ファイル・他クラスからのアクセスをプロテクトする」
private は「自クラスからのアクセスしか許さない」
という意味になります。
また、アクセス修飾子をつけない場合(なし)も意味を持ちます。
アクセス修飾子をつけない場合は「同じパッケージに属するクラスからしかアクセスできない」という意味になります。
※
パッケージとは
複数のクラスを一つのまとまりとしてまとめたもの
Javaはクラスを一つのJavaファイルにまとめて定義することができますが、一つのJavaファイルにはpublic修飾子を記述したクラスは一つしか定義できません。
試しに下記のようなサンプルをコンパイルしてみてください。
public class SampleMain{
public static void main(String[] args){
Sample smp = new Sample();
System.out.println(smp.getResultString() + "");
}
}
public class Sample
{
public String getResultString(){
return "このサンプルはコンパイルエラーとなります。";
}
}
【コンパイルエラー】
SampleMain.java:8: クラス Sample は public であり、ファイル Sample.java で宣言し
なければなりません。
public class Sample
^
エラー 1 個
コンパイルエラーとなることが確認できたと思います。
このため、一つのJavaファイルに複数のクラスを定義したとしても他ファイルから呼び出せるクラスは一つしかありません。