私が次のクラスを持っていると仮定します
class A {
//some attributes
@override
protected void finalize() throws Throwable {
//do something
}
}
class B extends A {
@override
protected void finalize() throws Throwable {
//DONT call super.finalize()
//do something
}
}
このシナリオではどうなりますか?クラスAのfinalizeメソッドを呼び出すと、ある時点でガベージコレクターによって呼び出されますか?
とにかくガベージコレクターによって呼び出される場合、それを呼び出すことと、子クラスのfinalizeメソッドでAのfinalizeメソッドを呼び出さないことの違いは何ですか?
どのシナリオで、子クラスで親のfinalizeメソッドを呼び出さなくても大丈夫ですか?そのようなシナリオの例はありますか?