以下が、final クラスの記述形式です。
final class クラス名{
処理;
}
以下がfinal メソッドの記述形式です。
アクセス修飾子 final 戻り値の型 メソッド名(){
処理;
}
以下は final キーワードを使用してサブクラスからオーバーライドさせたくないメソッドを作成するプログラムの例です。
public class FinalTest {
//fainalメソッドの作成
public final void finalTest() {
System.out.println("fainalメソッド");
}
}
以下が上記のクラスを継承し、オーバーライドしているサブクラスです。
public class FinalSubTest extends FinalTest {
//サブクラスでのオーバーライド
public final void finalTest() {
System.out.println("サブクラス");
}
}
サブクラス内のメソッドで以上のように記述しますと「3行目」でコンパイルエラーとなってしまいます。
以下は final キーワード使用して他のクラスから継承されたくないクラスを作成するプログラムの例です。
//fainalクラスの作成
final class FinalTest {
public void finalTest() {
System.out.println("fainalクラス");
}
}
以下が上記のクラスを継承しようとしたクラスです。
public class FinalSubTest extends FinalTest {
public void finalTest() {
System.out.println("サブクラス");
}
}
final クラスを継承しようとすると「1行目」でコンパイルエラーとなってしまいます。
Java では、変数に final キーワードを記述することによって値を変更することが出来ない変数を作成することが出来ます。
以下がそのプログラムの例です。
public class FinalTest {
//finalキーワードを記述
static final int index = 2;
public static void main(String[] args) {
System.out.println(index);
}
}
以上のように記述すると「index」の値は変更することが出来なくなります。