値や定義を固定するキーワード「final(定数・変更不可)」とは?
Javaでは、変数・メソッド・クラスなどに対して 変更を禁止するために final
キーワードを使います。
「この値は変わらない」「このメソッドは上書きさせない」など、安全なプログラム設計に役立ちます。
1. final変数(定数)
一度代入したら変更できない変数です。Javaでは定数を表すときによく使います。
final int MAX_USERS = 100;
// MAX_USERS = 200; ← エラー!再代入できない
- 慣例として大文字+アンダースコアで定数名をつける
- 初期化は宣言と同時に行うのが基本
コンストラクタで初期化する場合
public class Person {
private final String name;
public Person(String name) {
this.name = name; // コンストラクタ内で1回だけ代入OK
}
}
2. finalメソッド(オーバーライド禁止)
継承先のクラスでオーバーライド(上書き)を禁止するために使います。
public class Animal {
public final void breathe() {
System.out.println("呼吸する");
}
}
class Dog extends Animal {
// public void breathe() {} ← エラー!上書き禁止
}
3. finalクラス(継承禁止)
他のクラスがこのクラスを継承できないようにするには、クラスにfinal
を付けます。
public final class MathUtils {
public static int square(int x) {
return x * x;
}
}
// class AdvancedMath extends MathUtils {} ← エラー!
finalの特徴まとめ
- final変数:値を一度だけ設定可能(再代入禁止)
- finalメソッド:子クラスでの上書き禁止
- finalクラス:継承そのものを禁止
static finalで定数を定義
static final
を組み合わせることで、クラス共通の定数が作れます。
public class Config {
public static final String VERSION = "1.0.0";
}
まとめ
final は、Javaで「もう変更しない」という意思を明確に表すキーワードです。
値を固定したいとき、継承や上書きを防ぎたいときに使うことで、バグの防止や意図の明確化に役立ちます。
変えない = final
というルールをぜひ覚えておきましょう!