Java final class finalメソッド

メンバ変数にfinalを付けると、
定数化する事はfinal – 変数の固定機能で説明しましたが、

メンバ関数クラスにもfinalを付ける事ができます。


メンバ関数にfinalを付けた場合

メンバ関数にfinalキーワードを付けると、
そのメンバ関数がオーバーライド不可になります。

/********** 基本クラス **********/
class kihon {

      public final void show() {
            System.out.println("基本クラス");
      }

}

/********** 派生クラス **********/
class hasei extends kihon {

      public void show() {
            System.out.println("派生クラス");
      }
}

このプログラム例では、
基本クラスのメンバ関数showfinalが付いているので、
その派生クラスでメンバ関数showのオーバーライドはできません。

なので、このプログラムはエラーとなり、実行できません。


クラスにfinalを付けた場合

クラスにfinalキーワードを付けると、
そのクラスは継承できないクラスになります。

/********** 基本クラス **********/
final class kihon {
      public int data1;
}

/********** 派生クラス **********/
class hasei extends kihon {
      public int data2;
}

このプログラム例では、
基本クラスにfinalが付いているので、
その派生クラスは定義できません

なので、このプログラムはエラーとなり、実行できません。

派生クラスを定義できないので、
自動的にメンバ関数はfinal付きとして処理されます。

一方、クラスにfinalが付いていても
メンバ変数は自動的にfinalが付かないので注意して下さい。