Contents
【Java】finalについて解説
finalについて
「final」を和訳すると「最後の」という意味がある。Javaにおいて「final」を付与することによって、言葉のとおり変更できなくなる。「変数」は変わる数の言葉どおり、自由に変更できるものであるが、「final」は一度代入したら変更できない定まった数であるため「定数」となる。
・変数を定数にする。(変数・フィールドに付与時)
・クラスの継承を不可とする(クラスに付与時)
・サブクラスでオーバーライドできなくする(メソッドに付与時)
変数やフィールドにfinalを付与すると「定数」になる。
変数やフィールドにfinalを付与すると定数になります。「定数」になるとはどのようになるのか見ていきましょう。
まずは、「変数やフィールド」に「final」を付与する際の構文になります。
アクセス修飾子 final 型名 変数名; または
final アクセス修飾子 型名 変数名;
「定数」になるとは、上記の構文で宣言をした後に、変数を代入しようとするとコンパイルエラーになります。つまり、変更があるようにプログラムが組めなくなるわけです。
サンプルコード:「SAMPLE_FINAL.java」
public class SAMPLE_FINAL { public static void main(String[] args) { } |
上記のようにプログラムを組んでもコンパイルエラーは起きません。
変数の値をプログラム中に変更しようとすると以下のようなコンパイルエラーが出力されます。
サンプルコード:「SAMPLE_FINAL.java」
public class SAMPLE_FINAL { public static void main(String[] args) { |
コンパイルエラー
final フィールド SAMPLE_FINAL.FINALTEST には代入できません。 |
上記のように、finalを付与した変数は変更しようとしても変更できないことが分かります。
すなわち「定数」になりました。
なお、サンプルプログラムでは「static final」とstaticをつけておりました。なぜなら、「public static void main(String[] args) {」は「static」が付いており、「staticな領域から非staticな領域へのアクセスはできない」という性質を持っているため、「public static final String FINALTEST 」と「static」を付与しております。
なお、「static」を付与しない場合は以下のようなエラーメッセージが出力されます。
サンプルコード:「SAMPLE_FINAL.java」
public class SAMPLE_FINAL { public static void main(String[] args) { |
コンパイルエラー
非 static フィールド FINALTEST を static 参照できません |
上記のように、finalを付与した変数は変更しようとしても変更できないことが分かります。
「static」については以下の記事に詳しく記載しています。
【Java】staticについて(staticメソッド・stati変数・staticイニシャライザについて解説)
【Java】finalの動画
なかなか理解できないときはYoutube動画で学習するのも一つの手です。
Youtubeで公開されている動画についてまとめました。
クラス宣言 動画
📝クラス宣言 Youtube動画
Java final keyword ⛔ – YouTube
上記の動画では英語での動画ですが、日本語字幕があり、動画を見ながら学習することができます。

・【Java】変数の宣言及び値のセットについてまとめました(基本のデータ型、配列)
【Java】インスタンスについてまとめました(生成方法や使用方法を紹介)
【Java】Listの使い方(put、get、size、isEmpty、removeなど)