Задать вопрос
Rou1997
@Rou1997

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

Без этого же бред получается, вот есть стандартный, базовый класс ListView, один сторонний разработчик написал на его основе PullToRefreshListView, другой - LoadMoreListView, а требуется, чтобы в одном классе был функционал из обоих, приходится создавать новый класс, опять наследуя от ListView, и просто копировать то и другое, и это если исходный код вообще открыт, а если закрыт, как мне быть по задумке создателей языка, которые как правило очень "правильные" и против реверс-инжиниринга и т.п.?
  • Вопрос задан
  • 315 просмотров
Подписаться 1 Оценить 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
AxianLTD
@AxianLTD
Вопрос больше похож на крик души, так как изначально не понятно чем вы пользуетесь. Для примера C++ www.c-cpp.ru/books/mnozhestvennoe-nasledovanie поддерживает множественное наследование.
Я бы все-таки пересмотрел архитектуру проекта. Раз для реализации выбран язык не поддерживающий множественное наследование, то при проектировании архитектуры следует учитывать ограничения инструмента.
Ответ написан
Cписок языков с Multiple inheritance довольно обширен. И там есть упомянутый уже C++.

Основные проблемы связанные с множественным наследованием заключаются в совпадении имен полей и методов. Одна из таких известна как The Diamond Problem. Если просто:
-Class A содержит метод do()
-Class B & Class C наследуются от A и переопределяют do()
-Class D наследуется от B & C
Что мы получим здесь: new D().do()?

Вот на этот счет Java & С# предлагают концепцию множественного наследования НО от интерфейсов(+вводится новое ключевое слово interface). Конфликтов уже нет, так как мы реализуем интерфейсы для каждого отдельного класса.

А вот в С++ как такового понятия интерфейса нет(и ключевого слова тоже нет). Его приходится уже "эмулировать" абстрактным классом. Подробнее здесь

P/s реализация поддержки концепции множественного наследования зависит только от языка, и отдана она на откуп создателям. Одни вот посчитали, что количество проблем от множественного наследования будет больше, чем это поможет решить задач. И не сделали этого в своем языке.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы