Interfaces allow you to use abstraction and have flexibility in code. You can think of an interface as a contract the all classes that implement it must obey.
They are also essential for dependency injection and unit testing which we'll cover in a coming video.