LoginSignup
1
1

More than 3 years have passed since last update.

【Java開発】第12回 final

Last updated at Posted at 2020-09-29

初めに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はfinalについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第11回 staticです。

final

Javaプログラムでfinalの意味は最後で決めたので修正できませんという意味です。

つまり、finalが付与された要素は初期化の以後に修正することができません。

finalは変数、メソッド、クラスに付与できます。

final変数

final  変数名 = 

finalが付与された変数は定数になります。

定数は変わらない数を意味し、定数で宣言した変数は値を変えることができません。

定数は英語の大文字と_で作成します。

普段、final変数はstaticと組み合わせて色んなところで共有する固定値を指定して使います。

サンプル

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;
    }   
}       

image.png

上記のようにfinalは配列の長さなどの変わらない値を作成するために使われます。

しかし、作成されたfinal変数に値を変える動作を行うとコンパイルエラーが表示されます。

・オブジェクト変数の場合

オブジェクト変数の場合、フィールドを変更することはできますが、

オブジェクト変数に新しいオブジェクトを代入することはできません。

サンプル

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;  
}       

image.png

・引数の場合

引数にもfinalを付与することができます。

付与するとその引数は使われるメソッドの中で変更することができません。

サンプル

public final class FinalSample {        
    public void finalTestMethod(final int a) {  
        a = 10;
    }   
}       

image.png

finalメソッド

finalメソッドは継承された子供クラスで再定義することができません。

サンプル

public class ExampleCalss extends FinalMethodTest {     
    @Override   
    public final void printResult() {   

    }   
}       

class FinalMethodTest {     
    int result = 10;    
    public final void printResult() {   
        System.out.println(result);
    }   
}       

image.png

finalクラス

クラスをfinalを付与して作成するとその内容を修正できますので継承ができません。

finalは変数やメソッドを再定義すると機能が正常的に動作されないクラスに付与して使います。

サンプル

public class ExampleCalss extends ExtendTest {  
    public static void main(String[] args) {

    }
}   

final class ExtendTest {    
    int a;
}   

image.png

上記のようにfinalで宣言されたクラスは継承するとコンパイルエラーが表示されます。

終わりに

今回の記事は以上になります。

次回はJavaの変数のスコープを学びましょう。

私たちの最新の記事はこちらで確認することができます。

ご覧いただきありがとうございます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1