Почему не рекомендуется использовать множественное наследование? - PullRequest
5 голосов
/ 12 января 2012

Я создаю классы S4 в R.

Я читаю в https://github.com/hadley/devtools/wiki/S4

Обратите внимание, что S4 поддерживает множественное наследование, но это следует использовать с особой осторожностью, так какпоиск метода чрезвычайно сложен.

Что такое поиск метода и почему он сложнее с множественным наследованием?

1 Ответ

10 голосов
/ 12 января 2012

Когда вы набираете f(x), когда x принадлежит нескольким классам (скажем, A, B и C), компьютер должен решить, какой метод f вызвать (тот из класса A, B или C ): это называется «поиск метода».

Множественное наследование часто создает проблемы при развитии кода.

Представьте, что вы написали два базовых класса A и B, а класс C наследуется от обоих. Все отлично работает Несколько месяцев спустя разработчик, который использует класс A и совершенно не знает о классах B и C (он им не нужен), добавляет новый метод в класс A. Ему неизвестно, что уже существует метод с таким же имя в классе B. Что происходит с объектами класса C? Будет ли использоваться метод из A или B? В некоторых языках код может потерпеть неудачу, в других вы можете иметь неопределенное поведение и очень сложную ошибку.

...