はじめに
皆さん。こんにちは!
DreamHanksの254cmです。
今回はfinalについて説明していきます。
Java記事のまとめはこちらです。
前回の記事は【Java開発】第11回 staticです。
final
Javaプログラムでfinalの意味は最後で決めたので修正できませんという意味です。
つまり、finalが付与された要素は初期化の以後に修正することができません。
finalは変数、メソッド、クラスに付与できます。
final変数
1 |
final 型 変数名 = 値 |
finalが付与された変数は定数になります。
定数は変わらない数を意味し、定数で宣言した変数は値を変えることができません。
定数は英語の大文字と_で作成します。
普段、final変数はstaticと組み合わせて色んなところで共有する固定値を指定して使います。
サンプル
1 2 3 4 5 6 7 8 9 |
public class FinalSample { final int INDEX_LIMIT = 100; public void display() { System.out.println(INDEX_LIMIT); int[] arr = new int[INDEX_LIMIT]; INDEX_LIMIT = 1005; } } |
上記のようにfinalは配列の長さなどの変わらない値を作成するために使われます。
しかし、作成されたfinal変数に値を変える動作を行うとコンパイルエラーが表示されます。
・オブジェクト変数の場合
オブジェクト変数の場合、フィールドを変更することはできますが、
オブジェクト変数に新しいオブジェクトを代入することはできません。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public final class FinalSample { public static void main(String[] args) { final int RESULT = 10; RESULT++; final SampleClass SAMPLE = new SampleClass(); SAMPLE.a = 10; SAMPLE.a = 15; SAMPLE = new SampleClass(); } } class SampleClass { int a; } e> |
・引数の場合
引数にもfinalを付与することができます。 付与するとその引数は使われるメソッドの中で変更することができません。 サンプル
1 2 3 4 5 |
public final class FinalSample { public void finalTestMethod(final int a) { a = 10; } } |
finalメソッド
finalメソッドは継承された子供クラスで再定義することができません。
サンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class ExampleCalss extends FinalMethodTest { @Override public final void printResult() { } } class FinalMethodTest { int result = 10; public final void printResult() { System.out.println(result); } } |
finalクラス
クラスをfinalを付与して作成するとその内容を修正できますので継承ができません。
finalは変数やメソッドを再定義すると機能が正常的に動作されないクラスに付与して使います。
サンプル
1 2 3 4 5 6 7 8 9 |
public class ExampleCalss extends ExtendTest { public static void main(String[] args) { } } final class ExtendTest { int a; } |
上記のようにfinalで宣言されたクラスは継承するとコンパイルエラーが表示されます。
終わりに
今回の記事は以上になります。
次回はJavaの変数のスコープを学びましょう。
ご覧いただきありがとうございます。
コメント