It is very obvious that every class "inherits" the finalize method of the Object class, which does nothing. I think the
word includes in the question means
implements or
overrides.
Calling super.finalize() in the overriding finazlize method is not a must. Compiler does not enforce this rule. However, is a kind of "nice to have" especially when you have more than one class in your hierarchy and some/all of them override the finalize method.
The
should have qualifier in the question makes me think the answer is wrong. Because, it is neither enforced nor necessary for classes that inherit directly from the Object class.
Ajith