【Java入門】finalキーワードの本当の意味とは?3つの使い方を徹底解説 更新日: 2026年1月28日 私が新人の頃、ECサイトの金額計算プログラムで痛いミスをしたことがあります。 消費税率を int taxRate = 10; という普通の変数で定義していたのですが、数ヶ月後、後輩がその変数を別の計算で使い回そうとして、誤って taxRate = 5; と書き換えてしまったのです。 結果、一部の商品の税率がおかしくなり、経理部門からお叱りを受けました。 この時、先輩に「なぜ final を付けなかったんだ!」と怒られたことが、私のJavaエンジニアとしての転機になりました。 final の本質的な意味は、「これで最後。もう変更・拡張はさせない」という、強力な宣言です。 この「不変性」の宣言は、予期せぬバグを防ぐために、プロの世界では至る所で活用されています。 今日は、final が持つ3つの顔、「変数」「メソッド」「クラス」に対する使い方を、実例と共に解説します。 ① 変数に対する final:再代入を許さない「定数」 これが最もよく知られている使い方です。final を付けて宣言された変数は、一度値を代入すると、その後二度と値を変更(再代入)できなくなります。 public class FinalVariableExample { public static void main(String[] args) { // finalを付けた変数は、一度しか代入できない final int MAX_USERS = 100; System.out.println("最大ユーザー数: " + MAX_USERS); // 再び代入しようとすると、コンパイルエラーになる! // MAX_USERS = 101; // この行はコメントを外すとエラーになります } } 💡 なぜ重要か? 私の失敗談のように、消費税率や最大接続数など「絶対に変わってほしくない値」に final を付けておくことで、誤って値を書き換えてしまうヒューマンエラーを、コンパイラが未然に防いでくれるからです。 ② メソッドに対する final:上書きを許さない「最終決定版の機能」 オブジェクト指向には、親クラスの機能を子クラスが書き換える「オーバーライド」という仕組みがありますが、時には「この機能だけは絶対に変えさせない!」という強い意志が必要な場合があります。 // 親クラス class Animal { // このメソッドは子クラスで書き換え(オーバーライド)可能 public void cry() { System.out.println("動物が鳴く"); } // finalを付けたメソッドはオーバーライド禁止 public final void confirmHealth() { System.out.println("健康状態は正常です。この確認方法は変更できません。"); } } 💡 なぜ重要か? 認証処理や課金処理など、セキュリティに関わる重要なロジックを、開発者が意図せず書き換えてしまう事故を防ぐためです。 ③ クラスに対する final:継承を許さない「最終形態のクラス」 final の最も強力な使い方が、クラスそのものに付けることです。 final を付けて宣言されたクラスは、他のどのクラスも、そのクラスを継承することができなくなります。 // finalを付けたクラスは、これ以上継承できない final class SuperSecureSystem { public void showSecret() { System.out.println("これは極秘情報です。"); } } 💡 なぜ重要か? 実は、Javaの標準ライブラリである String クラスは final です。 もし String が継承可能だったら、悪意のあるハッカーが String のフリをする「偽Stringクラス」を作り、パスワードなどの情報を盗み取ることができてしまうかもしれません。 final は、そのような危険な拡張を根本から防ぐための、セキュリティの最後の砦なのです。 まとめ `final` キーワードが持つ3つの顔、ご理解いただけたでしょうか? 変数に付けると: 値の再代入を禁止する(定数化) メソッドに付けると: オーバーライドを禁止する(機能の固定) クラスに付けると: 継承を禁止する(拡張の禁止) これら全てに共通するのは、「変更させない」という強い意志です。 あなたのコードの中で「ここは絶対に変わらない・変えさせたくない」という場所を見つけたら、ぜひ final を付けてみてください。それが、堅牢なシステムを作る第一歩です。 プログラミング学習に必須ツール! 記事で紹介したコードがよく分からなかったり、ご自身のコードについてもっと知りたい場合は、AIコード解説ツールが便利です。コードを貼り付けるだけで、AIが日本語で分かりやすく解説します。 AIコード解説ツールを使ってみる →