Polymorphism at run time takes the form of "dynamic dispatch". That is, the actual method that is being called is determined based on the actual instance that you are calling the method on. Obviously, this only applies when you have an instance of the class, so, strictly speaking, polymorphism does not apply to hiding static methods. For a further explanation of the difference , check here .
source share