Почему не рекомендуется использовать множественное наследование?
-
27-10-2019 - |
Вопрос
Я создаю классы S4 в R.
Я читал в https://github.com/hadley/devtools/wiki/S4 <цитата>
Обратите внимание, что S4 поддерживает множественное наследование, но это следует использовать с особой осторожностью, поскольку это делает поиск метода чрезвычайно сложным.
Что такое поиск метода и почему он более сложен при множественном наследовании?
Решение
Когда вы вводите код f(x)
с кодом x
, принадлежащим нескольким классам (например, A, B и C), компьютер должен решить, какой метод f
вызывать (из класса A, B или C): это называется "поиск метода ".
Множественное наследование часто создает проблемы при развитии кода.
Представьте, что вы написали два базовых класса A и B, и класс C наследуется от обоих.Все нормально работает. Несколько месяцев спустя разработчик, который использует класс A и совершенно не знает классов B и C (они ему не нужны), добавляет новый метод в класс A. Без его ведома уже существует метод с таким жеимя в классе B. Что происходит с объектами класса C?Будет ли использован метод A или B?На некоторых языках код может дать сбой, на других может иметь место неопределенное поведение и очень трудно обнаруживаемая ошибка.