【Java】特定操作の禁止final修飾子

2018年3月11日

本稿は、final修飾子について説明します。

final修飾子は変数の書き換えの禁止、継承の禁止、メソッドオーバーライドの禁止を行えます。

特に複数人で開発する時は、役に立つ機能となります。

final変数

変数宣言時にfinalを使用しておくとその変数は書き換え不能となります。

「final 型 変数名」と記述しましょう。

public class Test {
	public static void main(String[] args){
		final int num = 0;
		num = 100;
	}
}
コンパイル結果

Test.java:4: エラー: final変数numに値を代入することはできません
num = 100;
^
エラー1個

finalクラス

クラス宣言時にfinalを使用しておくとそのクラスは継承できなくなります。

「final class クラス名」と記述しましょう。

public class Test {
	public static void main(String[] args){
	}
}
final class Super{
}
class Sub extends Super{
}
コンパイル結果

Test.java:7: エラー: final Superからは継承できません
class Sub extends Super{
^
エラー1個

finalメソッド

メソッド宣言時にfinalを使用しておくとそのメソッドはオーバーライドできなくなります。

「final 戻り値 メソッド名(引数)」と記述しましょう。

public class Test {
	public static void main(String[] args){
	}
}
class Super{
	final void test(){
	}
}
class Sub extends Super{
	void test(){
	}
}
コンパイル結果

Test.java:10: エラー: Subのtest()はSuperのtest()をオーバーライドできません
void test(){
^
オーバーライドされたメソッドはfinalです
エラー1個

Java

Posted by nompor