キーワード (Java)
final フィールドに付けられた場合は再代入を禁止する。メソッド宣言に付けられた場合は、下位クラスで上書きできないことを表す。クラス宣言に付けられた場合は、継承できないことを表す。なお、Javaでは、final宣言されたフィールドで、宣言部では初期化せずコンストラクタ内で1回だけ代入できる記述も行える。abstractとの併用はできない。メソッドの引数やローカル変数に使用すればその引数やローカル変数に対して再代入を許さないため、堅牢性の高いメソッドを作ることができる。final修飾子は「イミュータブル (不変)」なクラスを実装するときに役立つ。
例1:
例2:
static フィールドに付けられた場合は、クラスに属する変数(クラス変数、静的フィールド、クラスフィールド)が確保されることを表す。この修飾子のついたフィールドは、インスタンスがいくつ生成されてもフィールドの実体は1つで、すべてのインスタンスの間で共有される。
記述例:
メソッドに付けられた場合は、オブジェクトを生成しなくても直接呼び出せるメソッド(静的メソッド、クラスメソッド)であることを表す。手続き型言語の関数と同じ扱いになる。
例:
クラス内にstatic {...}というブロックが現れた場合は、そのクラスが最初に参照されたときにそのブロック内のコードを実行する。