1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Java】final修飾子

Posted at

はじめに

プログラムを実行したときに「値が null です」といったエラーを見たことはありませんか?
これは、変数を初期化せずに使ってしまったとき に発生するものです。
Javaでは、フィールドはデフォルト値(例えば String は null)が設定されるため、コンパイルは通りますが、
実行時に NullPointerException が発生する可能性があります。
final 修飾子を使うことで、変数の 再代入を防ぐ ことができ、意図しない変更を防止できます。

final修飾子とは

final修飾子は、一度値を代入した変数は変更や上書きができないようにする役割があります。
これにより意図しない変更を防ぐことができます。
クラスやメソッドに関しても同様です。

  • 変数へのfinal
    • 一度代入すると、値を変更することができない
  • メソッドへのfinal
    • finalが付いているメソッドはオーバーライドできない
  • クラスへのfinal
    • finalが付いているクラスへの継承はできない

finalを使用する際のルール

1. 変数に final を適用する場合
  • finalをつけた変数は一度だけ代入できる
  • フィールドかコンストラクタで必ず初期化する
2. メソッドに final を適用する場合
  • final メソッドは サブクラスでオーバーライドできない
3. クラスに final を適用する場合
  • final クラスは 継承できない

実際の使用例

簡単なので、変数の場合の例のみ紹介します

class Sample{

   private final String name = "hogehoge";

   name = "piyo"; //これは再代入になるのでエラー

}
class Sample{

   private final String name;

   //コンストラクタ
   public Sample(){
       name = "fuga";
   }

}

さいごに

final を適切に使うことで、コードの安全性が高まり、意図しない変更を防ぐことができます。
ただし、むやみに final をつけると柔軟性が失われることもあるため、
「本当に変更してほしくない変数・メソッド・クラス」に使用するのがよいかと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?