Introduction
Interfaces help different parts of a program work together by agreeing on what methods to use. They let us write flexible and organized code.
When you want different classes to share the same methods but have different behaviors.
When you want to separate what a class can do from how it does it.
When you want to write code that can work with many types of objects in a similar way.
When you want to design a system that can be easily extended with new features.
When you want to ensure certain methods are implemented by any class that uses the interface.