Introduction
Polymorphism lets us use different objects in the same way. Interfaces help us define a common shape for these objects.
When you want different objects to share the same behavior but have different details.
When you want to write code that works with many types without changing it.
When you want to make your code easier to extend with new types later.
When you want to ensure certain methods exist on different objects.
When you want to treat different objects uniformly in a collection.