finalize()
オブジェクトのメモリスペースを再利用しながらいくつかの作業を行うためにメソッドをオーバーライドしましたが、メソッドをオーバーライドするときに親を呼び出す必要があると誰かが言ってfinalize()
いますが、finalize()
コンストラクターはメソッドとは異なり、自動的にスーパークラスコンストラクターを呼び出しますfinalize()
これについて何か教えてもらえますか...?
これは、 Java言語仕様#12.6(私の強調)でそのように定義されています。
Objectクラスで宣言されたfinalizeメソッドはアクションを実行しません。クラスObjectがfinalizeメソッドを宣言しているという事実は、任意のクラスのfinalizeメソッドが常にそのスーパークラスのfinalizeメソッドを呼び出すことができることを意味します。スーパークラスのファイナライザーのアクションを無効にすることがプログラマーの意図でない限り、これは常に実行する必要があります。(コンストラクターとは異なり、ファイナライザーはスーパークラスのファイナライザーを自動的に呼び出しません。そのような呼び出しは明示的にコーディングする必要があります。)