Re[10]: Зачем отказались от множественного наследования в С#
От: DrJ  
Дата: 14.08.06 07:46
Оценка: +1
V>Таким образом, я считаю нецелесообразным использование множественного наследования ввиду того, что в процессе развития проекта очень легко можно нарваться на трудноустранимые проблемы, связанные с множественным наследованием. То есть это как бомба замедленного действия. Я уверен, что лучше сразу потратить чуть-чуть больше усилий и воспользоваться интерфейсами, но потом спать спокойно.

Любая программная система имеет два пространства — пространство задачи и пространство решения. С моей точки зрения, множественное наследование (даже интерфейсов) — это не очень удачный инструмент для моделирования предметной области, где действительно получаются гибриды ежа с ужом. Но, с другой стороны, множественное наследование в пространстве решения, применяемое с умом, — это очень мощный и удобный инструмент, который часто позволяет сделать программу выразительнее и короче. Что-то типа


class ATL_NO_VTABLE CXyz:
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CXyz, &CLSID_Xyz>,
    public IDispatchImpl<IXyz, &IID_IXyz, &LIBID_ATLXyzLib, 1, 0>
{
...
};


Почему множественного наследования нет в C#? Я думаю потому, что его нет в яве и объект-паскале Почему его нет в яве? Видимо, как здесь уже говорили, из-за трудностей со сборкой мусора и тем, что все классы должны наследоваться от Object, что и приводит к ромбовидному наследованию в ста процентах случаев...

Вообще, я не понимаю, почему, с точки зрения многих противников МН, одиночное наследование — допустимо? По мне, так это просто вырожденный случай, которые несет все его недостатки и достоинства. Если быть последовательным, то надо либо вообще не использовать наследование реализации, либо признать, что применяемое с умом множественное наследование ничуть не хуже одиночного.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.