We cannot call the abstract method in the immediate super class using super nor can use just super(). So in this case we cannot chain the finalize method from class C. super() alone should always be used as the first statement in the construtor but not in chaining the methods.
Why i want to public abstract void finalize() in class B, so that i can force all the subclasses to enforce of providing there own implementation of finalize method. If we try to do this i will not be able to call finalize method in class A. Then why to allow such kind of code? Does it make sense?
Do you have any other way that you can force that all subclasses should write the finalize method? Still we can do it use hook and cook. But it will not be elegant way of programming.