| 修飾子 | クラス | インタフェース | メソッド | コンストラクタ | ブロック | 変数 | 説明 |
| public | ○ | ○ | ○ | ○ | × | ○ | アクセス修飾子 |
| protected | ○ | ○ | ○ | ○ | × | ○ | アクセス修飾子 |
| private | ○ | ○ | ○ | ○ | × | ○ | アクセス修飾子 |
| static | ○ | ○ | ○ | × | × | ○ | スタティック修飾子 |
| final | ○ | × | ○ | × | × | ○ | ファイナル修飾子 |
| abstract | ○ | ○ | ○ | × | × | × | 抽象修飾子 |
| native | × | × | ○ | × | × | × | ネイティブ修飾子 |
| synchronized | × | × | ○ | × | ○ | × | 同期修飾子 |
| transient | × | × | × | × | × | ○ | 一時的修飾子 |
| volatile | × | × | × | × | × | ○ | 揮発性修飾子 |
| strictfp | ○ | ○ | ○ | × | × | × | 厳密浮動小数修飾子 |
| const | × | × | × | × | × | × | 定数 |
|
アクセス 修飾子 |
自クラス (自ファイル) |
サブクラス (自ファイル) |
他クラス (自ファイル) |
サブクラス (他ファイル) |
他クラス (他ファイル) |
| public | ○ | ○ | ○ | ○ | ○ |
| protected | ○ | ○ | ○ | ○ | × |
| なし | ○ | ○ | ○ | × | × |
| private | ○ | × | × | × | × |
public は「すべてのクラスからの参照を許す」、protected は「他ファイル・他クラスからのアクセスをプロテクトする」、private は「自クラスからのアクセスしか許さない」という意味になります。
static は、クラスがインスタンス化されていなくても、そのクラス、メソッド、変数などを参照可能であることを示します。
class クラス名 {
public static void main(String[] args) {
:
}
public static final double PI = 3.14159265358979323846;
public static double sin(double a) {
:
}
public static class クラスB {
:
}
}
例えば、java.lang.Math クラスの sin() メソッドは static 宣言されているので、java.lang.Math.sin() として呼び出すことができますが、もし、static 宣言されていなければ、下記のように呼び出す必要があります。
// static 宣言されていれば x = java.lang.Math.sin(y); // 直接呼び出せる
// static 宣言されていなければ java.lang.Math m = new java.lang.Math(); // インスタンス化が必要 x = m.sin(y);