вставлю свои 5 копеек: Интерфейс - это как бы - набор правил - которым должен соответствовать класс, использующий данный интерфейс
PHP:
interface man{
public function years_old();
public function color_skin();
}
class Russian implements man{
}
Тут видно - что интерфейс содержит 2 метода (без тела - это не существенно
Класс - который использует этот интерфейс - без методов.
После запуска скрипта - уже видно, что вылетает ошибка:
Fatal error: Class Russian contains 2 abstract methods and must therefore be declared abstract or implement the remaining methods (man::years_old, man::color_skin) on line8
В этой ошибке - говориться - что класс, использующий интерфейс - должен содержать методы - которые описаны в данном интерфейсе.
Для чего это нужно? Ну представь что над одним проектом работает 10 человек, эти люди должны написать по 20 однотипных классов.
Так вот если они увидят в описании проекта - что данные классы должны использовать такой-то интерфейс - и выполнять конкретные задачи (обладать только нужным функционалом) - то, даже не видя сам интерфейс или труд своих коллег - они напишут то - что и требовалось.
может есть более понятное объяснение - это просто имхо.