クラスやメソッドの宣言で public や protected、private などの修飾子がつきますが、これらはスコープ(ビジビリティ)といって、参照できる範囲を指定しています。
| 修飾子 | 意味 |
|---|---|
| なし | 同じパッケージから参照可能 パッケージ未指定の場合は、同じファイル内に定義したクラスから参照可能 |
| public | すべてのクラスから参照可能 |
| protected | 同じパッケージか派生クラスから参照可能 |
| private | 同一クラスからのみ参照可能 |
| なし | public | protected | private | |
|---|---|---|---|---|
| 同一クラスからのアクセス | ✓ | ✓ | ✓ | ✓ |
| 同一パッケージの別クラスからのアクセス | ✓ | ✓ | ✓ | ✗ |
| 別パッケージの派生クラスからのアクセス | ✗ | ✓ | ✓ | ✗ |
| 別パッケージのクラスからのアクセス | ✗ | ✓ | ✗ | ✗ |
public class Example {}
publicアクセス修飾子を付けたクラスおよびインタフェースは、一つのファイルにひとつしか記述できない。
publicアクセス修飾子を付けたクラスおよびインタフェースの名前とファイル名は一致させる必要がある。たとえば、public アクセス修飾子を付けた Example クラスのファイル名は Example.java とする。
クラスのコンストラクタにpublicアクセス修飾子を指定すると、そのクラスにアクセスできる全てのクラスからインスタンスを生成できる。
package com.segakuin.example;
public class Employee {
public Employee() {
// initialize
}
}
クラスのコンストラクタにアクセス修飾子を指定しないと、そのインスタンスは同じパッケージに属するクラスからしか生成できない。コンストラクタをpublicにするためには、クラスにpublicアクセス修飾子を指定するだけではないことに注意すること。
package com.segakuin.example;
public class Employee {
Employee() {
// initialize
}
}
Javaの実行プログラムには、次のメソッドが定義されている。
public static void main(String[] args)
それぞれのキーワードは、次の意味を持つ。
| キーワード | 意味 |
|---|---|
| public | どのクラスからでも参照できる |
| static | このクラスをインスタンス化しなくても呼び出せる |
| void | このメソッドの呼び出し元へ値を返さない |
| main | プログラムを実行するときに最初に呼び出される |
| String[] | 文字列の配列 |
| args | プログラムを実行するときに指定された引数が格納されている変数 |