Java final修飾子のサンプル

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

final修飾子

finalがつく場所 説明
変数の前 その変数に対して再代入が不可になります。
→定数として使用します。定数名は変数と区別が付くように大文字にし単語の区切りはアンダースコアにします
クラスの前 クラスの継承が不可になります
メソッドの前 オーバーライドが不可になります

変数の前にfinal

変数の前にfinalがつくサンプルです。
6行目は、変数の前にfinalがついています。
9行目は、値を代入しようとしますが、再代入不可です。コンパイルエラーになります。(finalフィールドに代入できません)

package test1;
 /**
 * finalのサンプル
 */
public class Test1 {
	private static final int PRICE = 100;
	
	public static void main(String[] args) {
//		PRICE = 200;
		System.out.println(PRICE); //100
	}
}

クラスの前にfinal

クラスの前にfinalがつくサンプルです。
5行目は、クラスの前にfinalがついています。
7行目は、Sample1クラスを継承しようとしますが、継承不可です。コンパイルエラーになります。(finalクラスをサブクラス化できません)

package test1;
/**
 * finalのサンプル
 */
final class Sample1{
}
//class Sample2 extends Sample1 {
//} 
public class Test1 {
	public static void main(String[] args) {
//		Sample2 s2 = new Sample2();
	}
}

メソッドの前にfinal

メソッドの前にfinalがつくサンプルです。
6行目は、メソッドの前にfinalがついています。
10行目は、printメソッドをオーバーライドしようとしますが、オーバーライド不可です。コンパイルエラーになります。(finalメソッドをオーバーライドできません)

package test1;
/**
 * finalのサンプル
 */
class Sample1{
	final void print() {
	}
}
class Sample2 extends Sample1 {
	//public void print() {
	//}
} 
public class Test1 {
	public static void main(String[] args) {
		Sample2 s2 = new Sample2();
	}
}

関連の記事

Java メンバー変数とローカル変数
Java 基本型とラッパークラス
Java staticメソッドとstatic変数のサンプル
Java static初期化ブロックと初期化ブロックのサンプル
Java staticインポートのサンプル
Java abstract修飾子のサンプル




△上に戻る