1. ホーム
  2. ジャワ

final, finally, finalizeの違いについて話してください。

2022-02-08 11:52:09

ファイナル

クラスがfinalと宣言されている場合、それは新しいサブクラスを派生させることができず、親クラスとして継承することができないことを意味します。つまり、クラスは抽象クラスと最終クラスの両方を宣言することはできないのです。変数やメソッドをfinalと宣言することで、使用中に変更されないようにすることができます。final と宣言された変数は、オブジェクトの新規作成時に初期化する必要があり(つまり、宣言された変数やコンストラクタ、コードブロック内でのみ初期化可能)、その後の参照では変更ではなく読み込みのみ可能です。final と宣言されたメソッドも同様に、使用可能なもののみで、オーバーライド(上書き)することはできません。

最後に

例外処理中にクリア処理を行うためのfinallyブロックを提供します。例外が発生すると、一致するcatch節が実行され、制御は(もしあれば)finallyブロックに移行します。

iii. ファイナライズ

メソッド名。Java技術では、ガベージコレクタがオブジェクトをメモリから消去する前に必要なクリーンアップを行うために、finalize()メソッドを使用することができます。このメソッドは、ガベージコレクタがオブジェクトが参照されていないと判断したときに、このオブジェクトに対して呼び出されます。このメソッドは Object クラスで定義されているため、すべてのクラスがこのメソッドを継承しています。サブクラスは、finalize() メソッドをオーバーライドして、システムリソースの整理やその他のクリーンアップを行います。finalize() は、ガベージコレクタがオブジェクトを削除する前にオブジェクト上で呼び出されます。注意:finalizeは必ずしもjvmから呼ばれるわけではなく、ガベージコレクタがゴミを片付けたいときだけ呼ばれます。