This document discusses polymorphism in object-oriented programming. It defines polymorphism as the ability to assume different forms and explains that it is built upon inheritance. Polymorphism allows functions to be called in the same way for different object types at runtime through the use of virtual functions and dynamic binding. This overcomes the issues of static binding by delaying determination of the object type until runtime.