Урок 11. Интерфейсы.

Множественное наследование - когда один класс наследует сразу несколько других классов

В php отказались от множественного наследования, но компенсировали это интерфейсами. По факту интерфейсы - это просто шаблоны (структуры), которые описывают, то какие константы, а также методы должен содержать класс, который будет реализовывать интерфейс.

Интерфейс не должен содержать реализацию указанных методов, там содержатся только перечисления того, что будет использоваться в самом классе.

В интерфейсе же могут находиться только объявления методов, я но никак не ни тела самих этих методов. Интерфейс мы можем определить с помощью ключевого слова interface

interface FirstInterface {}

Также как вы определяете класс, только это интерфейс. Для интерфейса, как и для абстрактного класса не могут быть созданы его экземпляры. В любом классе, который будет поддерживать данный интерфейс, должны быть реализованы все методы, которые используется в данном интерфейсе, то есть - это обязательно.

Как реализовываются интерфейсы?

Для того, чтобы реализовать интерфейс нужно записать ключевое слово implements. Вы указываете это ключевое слово в определении класса.

class Test implements FirstInterface {}

Класс обязательно должен иметь реализацию всех методов указанных в интерфейсе, то есть к примеру:

Стоит выделить, что один класс может реализовывать также и несколько интерфейсов. После ключевого слова implements нам нужно их записывать через запятую, но обязательно все их методы должны реализованы.

Для интерфейсов, как и для абстрактных классов нельзя создать экземпляры. Отличие абстрактного класса от интерфейса состоит в том, что в интерфейсе необходимо опускать тела всех методов, а абстрактные классы могут содержать реализацию отдельных методов. Также для классов невозможно множественное наследование, в отличие от интерфейсов.