Hi Surya and Aruna,
Static methods cannot be overridden. They just hide the superclass method. So they r resolved at compile-time only. The compiler doesn't keep them for run-time binding. Therefore, the type of the reference variable(not the type of the actual object) determines which version to use.
So, here when dealing with static method, the type of the ref. var determined which method to call, but when dealing with ord.method, the type of the object determined which method to invoke.
This same behaviour is obtained when dealing with overriding(actually hiding) private methods also.
Hope this helped u,
Kiran