Java final修飾子のサンプル(定数として使用)

Javaのfinal修飾子のサンプルです。

目次

サンプル 定数として使用する(変数の前にfinalをつける)
  クラスの前にfinalをつける
  メソッドの前にfinalをつける

定数として使用する(変数の前にfinalをつける)

static final  変数の型  変数名
  • 変数の前にfinalをつけると変数に対して再代入が不可になります。定数と呼びます。
  • 定数名は、変数と区別が付くようにするため、大文字にします。単語で区切りがある場合はアンダスコア(_)をつけます。
  • finalは、「最後の」という意味です。
  • 定数にはstatic修飾子も付けます。インスタンス毎ではなく、クラスに1つのみ保持します。

変数の前にfinalをつけたサンプルです。

package test1;
	
public class Test1 {
	
	private static final int PRICE = 100; // 定数
	
	public static void main(String[] args) {
	
//		PRICE = 200; // 変数に再代入不可
		System.out.println(PRICE); //100
	}
}

5行目は、定数です。変数の前にfinalがあるので再代入が不可になります。
9行目は、定数に対して値を代入しようとしていますができません。コンパイルエラーになります。
以下のメッセージが表示されます。
「finalフィールドに代入できません」

定数が配列の場合

定数を配列にすることも可能です。

package test1;
	
public class Test1 {

	public static final String[] COLOR = {"赤","黄","青"}; // 定数
	
	public static void main(String[] args) {
	
		System.out.println(COLOR[0]); //赤
	}
}

クラスの前にfinalをつける

final  クラス名

クラスの前にfinalをつけるとクラスの継承が不可になります。
Java クラスの継承の仕組みとサンプル

クラスの前にfinalがつくサンプルです。

package test1;

final class Sample1{ // クラスの前にfinal
}

//class Sample2 extends Sample1 { // クラスの継承不可
//} 

public class Test1 {
	public static void main(String[] args) {
//		Sample2 s2 = new Sample2();
	}
}

3行目は、クラスの前にfinalがついています。クラスの継承が不可になります。
6行目は、Sample1クラスを継承しようとしますが、継承できません。コンパイルエラーになります。
以下のメッセージが表示されます。
「finalクラスをサブクラス化できません」

メソッドの前にfinalをつける

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

メソッドの前にfinalをつけるとオーバーライドが不可になります。
Java オーバーライドのサンプル

メソッドの前にfinalがつくサンプルです。

package test1;

class Sample1{
	final void print() { // メソッドの前にfinal
	}
}

class Sample2 extends Sample1 {
	//public void print() { // オーバーライド不可
	//}
} 
public class Test1 {
	public static void main(String[] args) {
		Sample2 s2 = new Sample2();
	}
}

4行目は、メソッドの前にfinalがあるのでオーバーライドが不可になります。
9行目は、printメソッドをオーバーライドしようとしますが、オーバーライドできません。コンパイルエラーになります。
以下のメッセージが表示されます。
「finalメソッドをオーバーライドできません」

関連の記事

Java staticメソッドとstatic変数のサンプル
Java static初期化ブロックと初期化ブロック
Java インポートのサンプル(import)

△上に戻る