Java Finalキーワードの例
Javaの最終キーワードは、ユーザーが不要なコードを実行したり、コードや値が変更されないように制限するために使用される修飾子です。 このキーワードは3つのコンテキストで使用できます。 彼らです:
-
変数修飾子としての最終キーワード
-
メソッド修飾子としての最終キーワード
-
クラス修飾子としての最終キーワード
各コンテキストには、独自の意味と暗黙の制限があります。 以下で詳細に説明します。
1. 変数修飾子としてのFINALキーワード
各コンテキストには、それぞれ異なる目的があります。 finalは、変数とともに使用する場合、特にユーザーがコード内の他の場所で値を変更できないようにするためのものです。 final変数は、一度初期化されると、その値を変更できません。
final変数が宣言されたばかりで初期化されていない場合、コード全体で1回だけfinal変数に値を割り当てることができます。 final変数の値を複数回変更すると、コンパイルエラーが発生します。
たとえば、次のコードは、コンパイルしようとするとコンパイル時エラーが発生します。
FinalVariableExample.java
package com.techfou;
public class FinalVariableExample {
final int count = 0;
public FinalVariableExample() {
count++; //The final field FinalVariableExample.count cannot be assigned
}
}
出力
Output: Compile Time error
2. メソッド修飾子としてのFINALキーワード
finalをメソッドとともに使用すると、継承するクラスがメソッド定義をオーバーライドするのを制限します。 たとえば、次の例では、FinalMethodChildクラスがfinalメソッドtestCode()をオーバーライドしようとするため、コンパイル時エラーが発生します。
FinalMethodParent.java
package com.techfou;
public class FinalMethodParent {
final void testCode(){
System.out.println("This is a final method");
}
}
class FinalMethodChild extends FinalMethodParent{
//Cannot override the final method from FinalMethodParent
void testCode(){
System.out.println("This is overriding method");
}
}
出力
Output: Compile Time error
3. クラス修飾子としてのFINALキーワード
finalは、修飾子としてクラスに使用される場合、クラスが他のクラスによって拡張または継承されることを制限します。 たとえば、以下のコードをコンパイルしようとすると、クラスFinalClassParentが最終クラスであり、これ以上拡張できないため、コンパイル時エラーが発生します。
FinalClassParent.java
package com.example;
public final class FinalClassParent {
final void testCode(){
System.out.println("This is a final method");
}
}
//The type FinalClassChild cannot subclass the final class FinalClassParent
class FinalClassChild extends FinalClassParent{
void testCode(){
System.out.println("This is overriding method");
}
}
出力
Output: Compile Time error