|
Множественное наследование
|
|||
---|---|---|---|
#18+
Привет. Интересует теория. В С++ есть возможность множественного наследования, т.е. класс может наследовать от нескольких классов. В С# эту возможность изменили на наследование только от одного класса и множества интерфейсов. В FW 4.5 сделал три класса А, В и С. В наследуется от А, а С наследуется от В. Таким образом в С отражаются все наследники от А, но владелец этих наследников B, т.е. если я в В переопределю метод из А - буду иметь дело с экземпляром из B. Можно ли считать такое наследование множественным? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 00:35 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCМожно ли считать такое наследование множественным? С какого перепугу? Multiple inheritance is a feature of some object-oriented computer programming languages in which an object or class can inherit characteristics and features from more than one parent object or parent class. https://en.wikipedia.org/wiki/Multiple_inheritance В данном случае parent class (непосредственный класс-родитель) один. И иначе не получится никак - компилятор не позволит. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 06:10 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, да, абсолютно согласен. В данном примере, класс С наследуется исключительно от класса В. но если я меняю структуру класса А, то это отражается в С через класс В, если нет переопределения в классе В. могут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 09:34 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCмогут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)?именно для этого и придумали наследование. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:12 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitC могут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)? С дуру можно и буй сломать! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:12 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCмогут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)? Граблей полно, и все из-за неправильно спроектированных классов. Если все грамотно сделано, то В и С для того и наследуются от А, чтобы использовать его методы и свойства не переопределяя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:13 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyименно для этого и придумали наследование. да, но речь идёт о множественном наследовании от нескольких классов в C# (не интерфейсов). В этом и суть вопроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:34 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
ЕвгенийВС дуру можно и буй сломать! да, я уже читал о подобных извращениях в C#. Все плюются в сторону испытателей... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:36 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Множественное наследование когда так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В C# это запрещено. А то что ты нарисовал это Иерархия классов без множественного наследования. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:40 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Dima TГраблей полно, и все из-за неправильно спроектированных классов. Если все грамотно сделано, то В и С для того и наследуются от А, чтобы использовать его методы и свойства не переопределяя. Вопрос стоит в том, что класс В наследуется от класса А, а класс С наследуется от класса В. Таким образом, теоретически, в классе С есть свойства и методы класса А, но фактически они принадлежат классу В. Т.е. если мы переопределим метод А.АА в классе В, то вызвав его из класса С получим результат переопределённого метода из В. Т.е. "Сон Веры Павловны" прав в том, что это не множественное наследование. "ЕвгенийВ" прав о возможных "производственных травмах" при извращениях. но что происходит при такой схеме, если не переопределять методы и свойства класса А в классе В? С будет реально "видеть" все изменения которые будут происходить в классе А через класс В. Значит в какой-то степени можно упоминать о множественном наследовании, или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:47 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCAntonariyименно для этого и придумали наследование. да, но речь идёт о множественном наследовании от нескольких классов в C#в c# нет множественного наследования, поскольку его нет и не предвидится в MSIL, это всем известно (с). о чем речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:51 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCно что происходит при такой схеме, если не переопределять методы и свойства класса А в классе В? С будет реально "видеть" все изменения которые будут происходить в классе А через класс В. Значит в какой-то степени можно упоминать о множественном наследовании, или нет?если кошку назвать собакой, то в какой-то степени можно сказать "собака замяукала". но зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 10:54 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Dima TА то что ты нарисовал это Иерархия классов без множественного наследования. оно, спасибо. вопрос снят. откуда ноги выросли: недавно был на собеседовании. мне "выкручивали руки" пытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов? я сказал, что ни как, только от одного класса и/или множества интерфейсов. но вопрос ставили снова и снова. я предложил такую схему, как указана выше, со мной частично согласились, но вопрос оставили открытым, т.е. не отвеченным. Уже после собеседования перерыл половину инета, ответ один - в C# такого нет! Понял. Закрепил. Более не маюсь дурью. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:05 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyпоскольку его нет и не предвидится в MSIL, это всем известно (с) Именно в MSIL оно есть: Код: c# 1. 2. 3.
=> Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
- на уровне MSIL интерфейс - это тоже класс. Со спец. модификаторами, но, тем не менее. Тут уже пробегало в какой-то теме ранее, что некто с помощью извращений в MSIL сумел реализовать множественное наследование и для обычных классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:35 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitC мне "выкручивали руки" пытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов? я сказал, что ни как, только от одного класса и/или множества интерфейсов. Да бывают такие придурки, 10 лет назад видели книжку по плюсам и теперь спрашивают. Забей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:36 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCно вопрос ставили снова и снова Я бы после этого сам бы ушел с собеседования. Неадекватные вопросы на собеседовании - признак неадекватности работодателя. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:38 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Чисто схематически, но без особого смысла. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:46 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНеадекватные вопросы на собеседовании - признак неадекватности работодателя в данном случае соискатель слабину дал. фантазировать начал ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 11:50 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCпытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов? Хакнуть C# Озвучил бы цифру зарплаты, чего стесняться ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 12:35 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныAntonariyпоскольку его нет и не предвидится в MSIL, это всем известно (с) Именно в MSIL оно есть:хм, на каком-то англоязычном источнике я видел обсуждение что нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 13:27 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariy, До кучи . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 14:49 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Изопропилв данном случае соискатель слабину дал. фантазировать начал да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 14:55 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
ЕвгенийВ, Antonariy, я так понял это две ссылки об оном. Очень интересно. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 15:04 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
WitCИзопропилв данном случае соискатель слабину дал. фантазировать начал да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал.это тупой вопрос и тупое "решение". Делать множественное наследование в C# нет нужны, я не знаю не 1 причины, зачем мне было бы это нужно. По этому, придумывать и внедрять вот такие "костыли" я бы не стал. По этому, это вопрос по типу: Почему муха летает? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 15:07 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Roman MejtesWitCпропущено... да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал.это тупой вопрос и тупое "решение". Делать множественное наследование в C# нет нужны, я не знаю не 1 причины, зачем мне было бы это нужно.мне вот было нужно. например, есть три класса, один реализует состояние объекта, другой свойства и методы списка, третий свойства и методы дерева. нужно, чтобы один объект реализовывал состояние и список, другой состояние и дерево, третий список и дерево без состояния. множественное наследование позволяет как угодно жонглировать этими наборами поведений, а в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка. при этом было несколько списков, которым в общем-то не было нужды тормозить, унавоживая базу своими состояниями. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 15:20 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Roman MejtesДелать множественное наследование в C# нет нужны, скорее - множественного наследования нет и с этим следует смириться. то что оно тебе не нужно - не означает, что оно не нужно никому. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:02 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Специально же уходили от этого, создавая C#. Кому не нравиться, может перейти на плюсы, питон или перл! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:13 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyа в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка А в реальности надо было сделать в одном классе: состояние объекта, свойства и методы списка, свойства и методы дерева. Потому что никакого выигрыша от реализации этого в трех классах нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:24 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyнапример, есть три класса, частенько потребность возникает при реализации COM- объектов, например фильтров DirectShow интерфейсы, что должен реализовать фильтр имеют достаточно полные реализации в базовых классах. проще не связываться с c# и писать на c++ (и лишиться ряда преимуществ, что даёт c# при написании этих фильтров) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:25 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyа в реальности мне пришлось Есть паттерны, которые помогут решить такую задачу ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:35 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Cat2Antonariyа в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка А в реальности надо было сделать в одном классе: состояние объекта, свойства и методы списка, свойства и методы дерева. Потому что никакого выигрыша от реализации этого в трех классах нет.а в реальности существует сотня классов, часть из которых списки, часть деревья, часть и то и другое, часть ни то ни сё, и кому-то из них нужно сохранять состояние, а кому-то нет. тащить весь хлам в каждый класс нахрен не надо, и нефиг, например, дереву отсвечивать методами списка, которые ему ни к селу не к городу. выигрыш в том, что класс не вводит разработчика в заблуждение, показывая методы, которые на самом деле не работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:54 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
PallarisAntonariyа в реальности мне пришлось Есть паттерны, которые помогут решить такую задачуесть костыли, которые помогают калеке кое-как хромать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 17:55 |
|
Множественное наследование
|
|||
---|---|---|---|
#18+
Antonariyвыигрыш в том, что класс не вводит разработчика в заблуждение, показывая методы, которые на самом деле не работают. Если используешь студию EditorBrowsableAttribute + ObsoleteAttribute ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2016, 18:28 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1400546]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 420ms |
0 / 0 |