"Polymorphism is the ability to provide the same interface for classes with different implementations. It helps simplify code with abstraction."
You can explain in detail what polymorphism is in the context of OOP. Why it is needed, what problem it solves. What is his connection with abstraction? When to use static, and when dynamic?