【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イニシャライザについて解説)
コメントを残す