
🟢 はじめに
Javaの学習をしていると、変数(データを入れる箱)の前に final(ファイナル) というキーワードがついているのを見かけることはありませんか?
「普通の変数と何が違うの?」 「つけるとどんな良いことがあるの?」
今回は、そんなJavaの final について、RPGの世界に例えながら分かりやすく解説します!
final は「1回しかアイテムを入れられない、鍵付きの宝箱」📦🔒
プログラミングにおいて、変数は「データを入れる箱」です。
通常、箱の中身は後から何度でも入れ替えることができます。
しかし、変数を宣言するときに頭に final をつけると、その箱は 「1回しか中身を入れられない、一度入れると魔法の鍵がかかる宝箱」 に変身します!
実際のコードで、その動きを見てみましょう。
📝 サンプルコード:勇者のステータス管理
RPGの主人公である「勇者」の初期ステータスを設定するプログラムを書いてみます。
public class HeroStatus { public static void main(String[] args) { // ① 勇者の初期HPを設定(1回目の収納なのでOK!) final int initialHp = 100; // ② 初期HPをもとに、現在のHPを設定(これも箱 currentHp にとっては1回目の収納なのでOK!) final int currentHp = initialHp; // ③ 魔王から「HPを1にする」呪いを受けた!(エラー発生!) // currentHp = 1; // ← ここでコンパイルエラーになります❌ System.out.println("勇者の現在のHP: " + currentHp); } }
コードの解説:なぜエラーになるの?🤔
プログラムの動きを順番に追っていきましょう!
1️⃣ final int initialHp = 100;
空っぽの魔法の宝箱 initialHp に、「100」という数字を入れました。
1回目の収納なので大成功!ここでガチャッと頑丈な鍵がかかります。
2️⃣ final int currentHp = initialHp;
initialHp の中身(100)をコピーして、新しい魔法の宝箱 currentHp に入れました。
「あれ?finalに別の変数のデータを入れてもいいの?」と思うかもしれませんが、箱 currentHp にとってはこれが「1回目の収納」なので、正常にコンパイルが通ります!
3️⃣ currentHp = 1; (コンパイルエラー❌)
魔王の攻撃でHPを「1」に書き換えようとしています。
しかし、宝箱 currentHp にはすでに強固な鍵がかかっています。
「もう中身は絶対に変更させない!」とJavaが守ってくれるため、ここでエラー(コンパイルエラー)になります。
なぜ final を使うの?(使うメリット)💡
「わざわざ中身を変えられなくするなんて、不便じゃない?」と思うかもしれません。
しかし、final は 「このデータは途中で誰かに書き換えられたら困る!」という時に、データを守ってくれる心強いお守り(魔法の盾) のような存在なのです。
例えば、以下のような絶対に変わってはいけないデータに final を使います。
消費税率(途中で勝手に
15%に書き換えられたら計算が狂ってしまいますよね💸)ゲームの最大プレイヤー数
変更してほしくない初期設定のパスワード
あえて final をつけて「書き換え不可」にすることで、「間違って別のデータを上書きしてしまう」という恐ろしいバグ(不具合)を未然に防ぐことができます。
📝 まとめ
finalがついた変数は、1回しかデータを入れられない!(上書き・再代入できない)別の変数の値を入れても、その箱にとって1回目ならOK!
予期せぬ書き換えからデータを守る「お守り」として大活躍する!
Java Silverの試験でも、この「1回こっきりルール」は頻出ポイントだと言われています。
同じように「final修飾子の引っかけ問題の解き方がよく分からない😵💫」と悩んでいる方の参考になれば幸いです🙌