Okapi Project

final (ふぁいなる)

バージョン
2004 年 02 月 01 日 Ver.1.1
作成者
H.Izumi ( Xware )

目的

クラスやメソッドを継承されたくない!

finalってなに?

 サブクラスからオーバーライドや拡張されたくない、スーパークラスのメソッドに final というキーワードをつけることによって、サブクラスからオーバーライドされることや拡張されることを防ぐことが出来ます。 final は「これ以上変更出来ない」という意味を持っています。

finalの説明

final クラスの記述形式

以下が、final クラスの記述形式です。

final class クラス名{
処理;
}
クラス名
任意のクラス名を記述します。
処理
任意の処理を記述します。

final メソッドの記述形式

以下がfinal メソッドの記述形式です。

アクセス修飾子 final 戻り値の型 メソッド名(){
処理;
}
アクセス修飾子
任意のアクセス修飾子を記述します。
戻り値の型
任意の戻り値の型を記述します。
メソッド名
任意のメソッド名を記述します。
処理
任意の処理を記述します。

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 の使用例

以下は 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行目」でコンパイルエラーとなってしまいます。

ポイント

ヒント

変数の値を変更させない final の使用例

Java では、変数に final キーワードを記述することによって値を変更することが出来ない変数を作成することが出来ます。
以下がそのプログラムの例です。

public class FinalTest {
    //finalキーワードを記述
    static final int index = 2;

    public static void main(String[] args) {
        System.out.println(index);
    }
}

以上のように記述すると「index」の値は変更することが出来なくなります。

関連


Copyright © 2003 - 2006 Okapi Project All Rights Reserved.