Когда внедрять и расширять?
- когда
implement
илиextend
использоваться? - Каковы некоторые реальные примеры?
это правильно?
реализация по-видимому, это способ обеспечить, чтобы определенные методы существовали в классе и чтобы эти вызовы функций методов были правильно отформатированы. Реализация - это не способ передачи переменных или "настройки", хотя в классе?
ожидается, что в реальной жизни сценарий: у меня есть платформа электронной коммерции с несколькими платежными классами, которые все следуют одному и тому же дизайну. Когда новый класс оплаты должен быть добавлен, это действительно легко следовать определенному дизайну interface
чтобы убедиться, что все биты и куски есть, с самого начала.
расширения классы делает расширенный (ребенок?) класс наследует все от своего родительского класса, кроме методов и переменных, объявленных как private
?
ожидаемый сценарий реальной жизни: у меня есть один класс под названием sessions
С двумя дочерними классами с именем sessioncookies
и databasesessions
. sessioncookies
и databasesessions
, совместно наследуют несколько взаимных вариантов конфигурации от их родительских встреч, делая его легким изменить вариант конфигурации для того чтобы повлиять на все виды окончательного хранения данных посетителя.
1 ответ:
наследование полезно для уменьшения объема кода, который вы переписываете. Если у вас есть несколько классов с несколькими общими методами или полями, вместо того, чтобы определять эти методы и поля снова и снова, вы можете разложить их на базовый класс и заставить каждый из дочерних классов расширить этот базовый класс.
интерфейсы (и
implements
) полезны, когда вы хотите определить общую протокол как должна вести себя группа объектов. Например, вы, возможно, захотите, чтобы мандат, который объекты, которые сопоставимы, могут быть сравнены для равенства и хэширования и т. д.использование наследования в конечном счете является выбором дизайна. Будьте в поиске случаев, когда вы определяете одни и те же методы в нескольких классах; это отличные случаи, когда вы можете разложить эти методы на базовый класс. То же самое относится к классам, которые соблюдают некоторые из тех же характеристик: вы можете гарантировать согласованность, поместив эти характеристики в интерфейс, который будет реализован теми, кто связан занятия.
наследование-это большая концепция в ООП, которая выходит далеко за рамки только PHP. Я рекомендую вам прочитать статья Википедии о наследовании и возможно шаблоны проектирования бандой из четырех.
Я считаю, что ваше понимание наследования в основном правильно. Следующим шагом было бы использовать его в производстве.