+ 1
It's a little hard to appreciate at first.
An interface defines what a class should look like, but not how it works. For instance, in Java (which is very similar) the Collection interface defines how a collection of objects should work. We need a way to add and retrieve elements and do some basic operations. However the interface makes no specification as to how this should be done. It is up to the implementations to decide how this can be done.
In OOP it is good practice to code to an interface, rather than concrete classes. This way if the implentation needs to change (a new object is added or some extra functionality must be included) the code should be relatively easy to modify by changing the implementing class. Since the code is done via an interface it is 'blind' to this change - it doesn't care about implementation, only that a functionality exists
This is a code I wrote in Java which uses interfaces. The interface and implenting classes are next to each other and is well commented so might be helpful :)
https://code.sololearn.com/cop6od6LxalY/?ref=app