Javaのfinalキーワードとは?定数宣言から継承・オーバーライドの制限まで解説
Javaにおける「final」は、変数・メソッド・クラスに対して「それ以上変更できない」ことを示す修飾子(キーワード)です。主に定数の宣言に使われ、一度値を代入するとプログラム中で再代入することはできません。
finalを使った定数の宣言
finalキーワードの最も代表的な使い方は、定数の宣言です。例えば、円周率のように値が変わらないものを扱う場合に利用します。
final double PIE = 3.14;このように宣言すると、PIEは以降プログラム内で別の値に書き換えられなくなります。もし再代入しようとすると、コンパイルエラーが発生するため、誤って重要な値を変更してしまう事故を防げます。
クラスやメソッドへのfinalの適用
finalは変数だけでなく、クラスやメソッドにも適用でき、それぞれ異なる効果があります。
finalクラス:継承を禁止する
クラスにfinalを付けると、そのクラスは継承(extends)できなくなります。実際に、Java標準ライブラリのStringクラスもfinalとして宣言されており、サブクラスを作成することはできません。設計上、外部で拡張されたくないクラスに有効です。
finalメソッド:オーバーライドを禁止する
メソッドにfinalを付けると、サブクラスでそのメソッドをオーバーライドできなくなります。継承は許可しつつ、特定の重要な処理だけは勝手に書き換えられたくない場合に役立ちます。
まとめ
finalキーワードは、対象によって次のような役割を持ちます。
- 変数:再代入不可の定数として扱える
- メソッド:サブクラスによるオーバーライドを禁止できる
- クラス:継承(拡張)を禁止できる
意図しない変更や拡張を防ぐことで、コードの安全性と保守性を高められるため、実務でも頻繁に活用される重要なキーワードです。
-
JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説
StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T
-
JavaのArrayIndexOutOfBoundsExceptionとは?発生原因と対処法を解説
配列とインデックスの基本 配列(Array)とは、同じ型の要素を固定サイズで順番に格納するためのデータ構造(コンテナ/オブジェクト)です。配列のサイズ(長さ)は生成時に決定され、後から変更することはできません。 配列内の各要素の位置は「インデックス(添字)」と呼ばれます。Javaの配列は0始まりのため、最初の要素はインデックス0、2番目の要素はインデックス1、というように順に番号が割り当てられます。 配列の各要素へは、「配列名[インデックス]」という形式の式を使ってアクセスします。 System.out.println(myArray[3]); // 1457 が出力される たとえばサイズ7