Полиморфизм
При использовании разветвленных наследственных иерархий все объекты
производных классов автоматически снабжаются методам и базового класса.
Производные классы могут использовать методы базового класса без
изменений, адаптировать их или заменять своей собственной реализацией. Как бы
ни были реализованы эти методы, можно достоверно утверждать, что все
объекты наследственной иерархии классов будут обладать некоторым
количеством методов с одними и теми же названиями. Это явление называется
полиморфизмом.
Абстрактные классы
Для этого объявление класса предваряют ключевым словом abstract.
Абстрактные методы
В объектно-ориентированной модели РНР предусмотрены абстрактные
методы, объявление которых предваряется ключевым
словом abstract. Для абстрактных методов задают их описание и список
параметров без реализации. Каждый класс, который наследуется от базового
класса, содержащего абстрактные методы, обязан их реализовать. Если хотя бы
один метод не реализован - работа РНР-скрипта будет остановлена, а
интерпретатор сообщит о необходимости реализации абстрактного метода в
производном классе. При помощи абстрактных методов исключается возможность
неумышленного нарушения полиморфизма для производных классов.
Наличие в классе абстрактного метода требует, чтобы класс также был объявлен абстрактным.
Создание интерфейса
Интерфейс полностью состоит из абстрактных методов.
Классы задают поведение объектов, а интерфейсы
поведение группы классов . Класс, реализующий интерфейс, должен перегрузить
методы интерфейса. Два класса, реализующих одинаковые интерфейсы,
имеют одинаковый набор определяемых ими методов. Таким образом, назначение
интерфейса - это реализация полиморфизма для двух классов, не
имеющих общего базового класса.
Для создания интерфейса используется ключевое слово interface.
Для создания класса, реализующего интерфейс, используется ключевое слово implements.
Класс может реализовывать любое количество интерфейсов;
для этого достаточно перечислить их через запятую после ключевого слова implements.
Интерфейсы, так же как и классы, могут наследовать друг другу при помощи
ключевого слова extends.