Может кто-нибудь сказать мне, что основные преимущества и недостатки наследования/многоуровневого наследования в php.Thanks заранее :)Преимущества и недостатки наследования в PHP
ответ
Преимущества: -
One Основными преимуществами наследования являются минимизация количества дубликатов кода в приложении путем совместного использования общего кода среди нескольких подклассов. Если эквивалентный код существует в двух связанных классах, иерархия обычно может быть реорганизована для перемещения общего кода до взаимного суперкласса. Это также приводит к лучшей организации кода и меньшим, более простым единицам компиляции.
Наследование также может сделать код приложения более гибким для изменения, поскольку классы, которые наследуются от общего суперкласса, могут использоваться взаимозаменяемо. Если тип возврата метода является суперкласс
Повторное использование - средство для использования общих методов базового класса без переписывания же расширяемость - расширение логики базового класса в соответствии с бизнес-логикой производного класса сокрытия данных - базовый класс может решить сохранить некоторые частные данные таким образом, чтобы он не мог быть изменен производным классом
Переопределение - с наследованием мы сможем переопределить методы базового класса, чтобы значительная реализация метода базового класса могут быть сконструированы в производном классе.
Недостатки: -
Одним из главных недостатков наследования является увеличение времени/усилий требуется программа, чтобы перейти через все уровни перегруженных классов. Если у данного класса есть десять уровней абстракции над ним, то по существу потребуется десять прыжков для выполнения функции, определенной в каждом из этих классов.
Основным недостатком использования наследования является то, что два класса (базовый и унаследованный класс) плотно соединяются. Это означает, что нельзя использовать независимо друг от друга.
Также со временем во время технического обслуживания необходимо изменить новые функции как базового, так и производного классов. Если будет изменена сигнатура метода, в обоих случаях мы будем затронуты (наследование &)
Если метод удален в «суперклассе» или агрегате, тогда нам придется перефакторировать в случае использования Этот метод может быть немного сложным в случае наследования, потому что наши программы все еще будут компилироваться, но методы подкласса больше не будут переопределять методы суперкласса. Эти методы станут самостоятельными методами сами по себе.
Не уверен, что это подходящий сайт для этого типа вопросов, но все в порядке.
Предположим, у вас есть базовый класс Base
, который распространяется на все остальные классы. В базе вы можете определить вещи, которые могут использовать все другие классы, например. соединение с mysqli, поэтому все классы могут использовать $this->mysqli
и не обязательно должны быть объявлены.
Я создал электронную коммерцию cms, где я использую ее таким образом.Я также определил метод под названием getLink()
, который проверяет, есть ли способ getUrl()
и getTitle()
. Эти методы определены в каждом дочернем классе (на моей CMS Product
, Category
...). Возьмем класс Product
, есть также методы getUrl()
и getTitle()
, но метод getLink()
находится в Base
, который продолжается Product
. Я использую метод getLink()
почти везде, поэтому, если я не хочу писать его в каждом классе, я просто пишу его в Base
, и я могу его использовать.
Другой пример из моей CMS: в конструкции Base
У меня есть чек, если был введен вход с именем global_update
. Он будет проверять, были ли определены $this->table
и $this->id
, и если да, то он обновит базу данных данными. В противном случае мне нужно будет определить обработчик для каждого действия по обновлению. Таким образом, у меня есть один глобальный для каждого класса, и я пишу собственные обработчики только для более сложных форм.
Надеюсь, это понятно, если нет, прокомментируйте и спросите.
- 1. Каковы преимущества и недостатки многократного наследования?
- 2. PHP-константы: преимущества/недостатки
- 3. Преимущества и недостатки J2ME?
- 4. Преимущества и недостатки CardView
- 5. Преимущества и недостатки appium
- 6. Преимущества и недостатки BPMN?
- 7. Преимущества и недостатки DotNetNuke?
- 8. Преимущества и недостатки NHibernate
- 9. Преимущества и недостатки AngularJS
- 10. WCF - преимущества и недостатки
- 11. преимущества и недостатки шаблона Smarty
- 12. gwt + grail .. преимущества и недостатки
- 13. Преимущества и недостатки программирования CAS
- 14. Преимущества и недостатки цепных методов?
- 15. Преимущества и недостатки нейронных сетей
- 16. Преимущества и недостатки лазурной защиты
- 17. Преимущества и недостатки использования ReactJS
- 18. Преимущества и недостатки функций вложенности
- 19. Каковы преимущества и недостатки метапрограммирования?
- 20. Преимущества/недостатки ветвей и forks
- 21. недостатки наследования в Java
- 22. Преимущества/недостатки int и Int32
- 23. Каковы преимущества и недостатки NHibernate?
- 24. EF CodeFirst преимущества и недостатки
- 25. Преимущества и недостатки использования раскадровки?
- 26. Преимущества и недостатки Android NDK
- 27. Преимущества/недостатки реактивного программирования
- 28. SOAP Pooling Преимущества/Недостатки
- 29. Преимущества/недостатки инструментов рефакторинга
- 30. Преимущества/недостатки единства строят?
http://php.net/manual/en/language.oop5.inheritance.php – user3647254
В чем причина того, чтобы снизить мой ответ? – Priyank
За ваш ответ или вопрос. (Я не ответил на ваш ответ) – user3647254