スポンサーリンク
Java

【Java】final 定数化について

Java

今回Javaで定数とは?

また定数の使い方について解説していきます。

何度も使用する「文字列」や変更、再代入されたくない変数は定数化しましょう。

  

定数とは

以下のようにfinalで宣言された変数を定数と呼びます。

static final 型 変数名

final付きで宣言することで再代入ができなくなり、

値の変更もできなくなります。

また、定数は変数と区別がつきやすいように

大文字で宣言し、

複数の単語を繋げる定数名の場合は

アンダースコア(_)を使います。

finalは配列やクラス、メソッドにも使用可能です。

サンプルコード 変数

変数にfinalをつけることによって、

再代入不可、変数の値の変更が不可になります。

public class Main {

    // クラスで使用する定数を宣言する
    public final String RESULT_OK = "OK";
    public final String RESULT_NG = "NG";

    public static void main (String[] args) {
        System.out.println(RESULT_OK);
        System.out.println(RESULT_NG);
    }
}
実行結果
OK
NG

サンプルコード クラス

final class クラス名{}

宣言はいつものクラスの宣言時にfinalを付与するだけです。

クラスを定義する際にfinalをつけた場合、

クラスの継承が不可になります。

// classの前にfinalを付ける
final class Sample{
    ・・・・・・・・・・・・・・
    ・・・・・・・・・・・・・・
}
// finalで宣言されたクラスなので継承ができない
// class Sample2 extends Sample{
// }

クラスを継承しようとしてますが、できません。

この状態でコメントアウトを解除したら

コンパイルエラーとなります。

サンプルコード メソッド

final 戻り値の型 メソッド名(){}

finalをつけてメソッドを宣言することで

finalの恩恵を受けれます。

メソッド定義のfinalの恩恵は

オーバーライドができなくなることです。

public class Sample {
    final void write() {}
}

public class Sample2 extends Sample {
    // 継承していてもfinalメソッドをオーバーライドできなくなっている
    // public void write() {}
}

継承元のメソッドをオーバーライドできず、

コメントアウトを解除するとコンパイルエラーとなります。