Интерфейс - именованный набор сигнатур методов. Тип реализует интерфейс неявно (не нужно объявлять implements): если у типа есть все методы интерфейса, он ему удовлетворяет. Переменная типа интерфейса может хранить значение любого конкретного типа с этими методами.