ООП - перегрузка дочернего и его родительского класса одновременно? - PullRequest
0 голосов
/ 26 августа 2009

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

Моя проблема в том, когда класс B наследуется от класса A, и где мне нужно перегрузить их оба, например:

class B extends A {}

Сначала я перегрузил A и B, чтобы изменить некоторые из их методов:

class AA extends A {}
class BB extends B {}

Но то, что делать для ББ, начинается с АА

Другими словами («<-» означает «расширяет»): </p>

class B   <---  class A
   ^               ^
   |               |
   |               |
class BB  <-?-  class AA

Ответы [ 4 ]

3 голосов
/ 26 августа 2009

Я думаю, вы можете искать Композиция

1 голос
/ 26 августа 2009

Да. Это где Черты или Композиция вступает в игру.

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

0 голосов
/ 26 августа 2009

Хорошее практическое правило - всегда отдавать предпочтение композиции, а не наследованию. Как только вы начинаете думать таким образом и почти всегда используете композицию, решение об использовании наследования становится довольно очевидным.

0 голосов
/ 26 августа 2009

То, что вы хотите выполнить, называется множественным наследованием, но это не поддерживается PHP и большинством других последних языков. Редко есть веская причина использовать множественное наследование, и, поскольку оно может сбивать с толку, его обычно осуждают.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...