Polymorphism in object-oriented programming (OOP) refers to the concept of 'one name, multiple forms,' and is categorized into compile-time (static) and run-time (dynamic) polymorphism. Compile-time polymorphism includes function and operator overloading, while run-time polymorphism is achieved using virtual functions. Example codes illustrate how function overloading and virtual functions allow flexibility in method invocation and binding based on arguments and object types.