Hi Sanjeev,
Perhaps I can try to do Prabhu's job at least partial.
I do not know the exact answer, but in the case of inherited static members, an outer instance is not necessary. You can access the static fields via the class names:
prints "Outer".
I think for non-static inner classes it must be so, that if they inherit from a super class, they must inherit everything, regardless if the fields are static or not.
But it won't compile if you make new static fields (or hide / "override" the inherited ones).
But you are right, it's a bit against the logic.
Yours,
Bu.