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

    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 реализация поддержки концепции множественного наследования зависит только от языка, и отдана она на откуп создателям. Одни вот посчитали, что количество проблем от множественного наследования будет больше, чем это поможет решить задач. И не сделали этого в своем языке.
    Ответ написан
    Комментировать