powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Множественное наследование
35 сообщений из 35, показаны все 2 страниц
Множественное наследование
    #39248566
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.
Интересует теория. В С++ есть возможность множественного наследования, т.е. класс может наследовать от нескольких классов.
В С# эту возможность изменили на наследование только от одного класса и множества интерфейсов.
В 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.
    public class A
    {
        public virtual void AA()
        {
            Console.WriteLine("A.AA()");
        }
    }

    public class B : A
    {
        public virtual void BB()
        {
            Console.WriteLine("B.BB()");
        }
    }

    public class C : B
    {
        public override void AA()
        {
            base.AA();
        }

        public override void BB()
        {
            base.BB();
        }
    }
...
Рейтинг: 0 / 0
Множественное наследование
    #39248591
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 (непосредственный класс-родитель) один. И иначе не получится никак - компилятор не позволит.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248667
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны,
да, абсолютно согласен. В данном примере, класс С наследуется исключительно от класса В.
но если я меняю структуру класса А, то это отражается в С через класс В, если нет переопределения в классе В.

могут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)?
...
Рейтинг: 0 / 0
Множественное наследование
    #39248712
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCмогут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)?именно для этого и придумали наследование.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248713
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC
могут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)?
С дуру можно и буй сломать!
...
Рейтинг: 0 / 0
Множественное наследование
    #39248714
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCмогут быть ещё какие-то грабли в этой схеме, если я буду просто использовать доступные методы и свойства из класса А в классах В и С (не переопределяя их)?
Граблей полно, и все из-за неправильно спроектированных классов. Если все грамотно сделано, то В и С для того и наследуются от А, чтобы использовать его методы и свойства не переопределяя.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248747
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariyименно для этого и придумали наследование.

да, но речь идёт о множественном наследовании от нескольких классов в C# (не интерфейсов).
В этом и суть вопроса.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248755
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВС дуру можно и буй сломать!

да, я уже читал о подобных извращениях в C#. Все плюются в сторону испытателей... :)
...
Рейтинг: 0 / 0
Множественное наследование
    #39248763
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Множественное наследование когда так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    public class A
    {
    }

    public class B
    {
    }

    public class C : A,B
    {
    }


В C# это запрещено.

А то что ты нарисовал это Иерархия классов без множественного наследования.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248774
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TГраблей полно, и все из-за неправильно спроектированных классов. Если все грамотно сделано, то В и С для того и наследуются от А, чтобы использовать его методы и свойства не переопределяя.

Вопрос стоит в том, что класс В наследуется от класса А, а класс С наследуется от класса В. Таким образом, теоретически, в классе С есть свойства и методы класса А, но фактически они принадлежат классу В.
Т.е. если мы переопределим метод А.АА в классе В, то вызвав его из класса С получим результат переопределённого метода из В.
Т.е.
"Сон Веры Павловны" прав в том, что это не множественное наследование.
"ЕвгенийВ" прав о возможных "производственных травмах" при извращениях.

но что происходит при такой схеме, если не переопределять методы и свойства класса А в классе В? С будет реально "видеть" все изменения которые будут происходить в классе А через класс В. Значит в какой-то степени можно упоминать о множественном наследовании, или нет?
...
Рейтинг: 0 / 0
Множественное наследование
    #39248782
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCAntonariyименно для этого и придумали наследование.

да, но речь идёт о множественном наследовании от нескольких классов в C#в c# нет множественного наследования, поскольку его нет и не предвидится в MSIL, это всем известно (с). о чем речь?
...
Рейтинг: 0 / 0
Множественное наследование
    #39248786
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCно что происходит при такой схеме, если не переопределять методы и свойства класса А в классе В? С будет реально "видеть" все изменения которые будут происходить в классе А через класс В. Значит в какой-то степени можно упоминать о множественном наследовании, или нет?если кошку назвать собакой, то в какой-то степени можно сказать "собака замяукала". но зачем?
...
Рейтинг: 0 / 0
Множественное наследование
    #39248803
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TА то что ты нарисовал это Иерархия классов без множественного наследования.
оно, спасибо. вопрос снят.

откуда ноги выросли:
недавно был на собеседовании. мне "выкручивали руки" пытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов? я сказал, что ни как, только от одного класса и/или множества интерфейсов.
но вопрос ставили снова и снова. я предложил такую схему, как указана выше, со мной частично согласились, но вопрос оставили открытым, т.е. не отвеченным.
Уже после собеседования перерыл половину инета, ответ один - в C# такого нет!
Понял. Закрепил. Более не маюсь дурью.

Спасибо.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248841
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyпоскольку его нет и не предвидится в MSIL, это всем известно (с)
Именно в MSIL оно есть:
Код: c#
1.
2.
3.
public interface IFoo {}
public interface IBar {}
public interface IZot : IFoo, IBar {}


=>
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
.class interface public abstract auto ansi test2.IFoo
{
} // end of class test2.IFoo
.class interface public abstract auto ansi test2.IBar
{
} // end of class test2.IBar
.class interface public abstract auto ansi test2.IZot
       implements test2.IFoo,
                  test2.IBar
{
} // end of class test2.IZot


- на уровне MSIL интерфейс - это тоже класс. Со спец. модификаторами, но, тем не менее. Тут уже пробегало в какой-то теме ранее, что некто с помощью извращений в MSIL сумел реализовать множественное наследование и для обычных классов.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248843
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC мне "выкручивали руки" пытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов? я сказал, что ни как, только от одного класса и/или множества интерфейсов.

Да бывают такие придурки, 10 лет назад видели книжку по плюсам и теперь спрашивают. Забей.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248848
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCно вопрос ставили снова и снова
Я бы после этого сам бы ушел с собеседования. Неадекватные вопросы на собеседовании - признак неадекватности работодателя.
...
Рейтинг: 0 / 0
Множественное наследование
    #39248866
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто схематически, но без особого смысла.
Код: 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.
 public interface I1
    {
        void M1();
    }
    public interface I2
    {
        void M2();
    }
    public class C1 : I1
    {
       public void M1()
        {
            Console.WriteLine("M1");
        }
    }
    public class C2 : I2
    {
        public void M2()
        {
            Console.WriteLine("M2");
        }
    }
    public class C3 : I1, I2
    {
        I1 i1 = new C1();
        I2 i2 = new C2();
        public void M1()
        {
            i1.M1();
        }

        public void M2()
        {
            i2.M2();
        }
    }
...
Рейтинг: 0 / 0
Множественное наследование
    #39248877
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНеадекватные вопросы на собеседовании - признак неадекватности работодателя
в данном случае соискатель слабину дал.
фантазировать начал
...
Рейтинг: 0 / 0
Множественное наследование
    #39248949
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCпытаясь добиться ответа на вопрос, как добиться множественного наследования в C#, от двух и более классов?

Хакнуть C#
Озвучил бы цифру зарплаты, чего стесняться
...
Рейтинг: 0 / 0
Множественное наследование
    #39249029
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныAntonariyпоскольку его нет и не предвидится в MSIL, это всем известно (с)
Именно в MSIL оно есть:хм, на каком-то англоязычном источнике я видел обсуждение что нет.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249038
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Множественное наследование
    #39249167
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
До кучи .
...
Рейтинг: 0 / 0
Множественное наследование
    #39249179
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилв данном случае соискатель слабину дал.
фантазировать начал
да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249190
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЕвгенийВ,
Antonariy,

я так понял это две ссылки об оном.
Очень интересно.
Спасибо.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249197
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitCИзопропилв данном случае соискатель слабину дал.
фантазировать начал
да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал.это тупой вопрос и тупое "решение". Делать множественное наследование в C# нет нужны, я не знаю не 1 причины, зачем мне было бы это нужно. По этому, придумывать и внедрять вот такие "костыли" я бы не стал. По этому, это вопрос по типу: Почему муха летает?
...
Рейтинг: 0 / 0
Множественное наследование
    #39249207
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesWitCпропущено...

да, но собеседователь (не кадровик) так настойчиво требовал, что у меня сложилось впечатление, что он знает чего-то, что не пишут в книгах. он уверен, что это возможно, хотя и не раскрыл секретов. да я и не спросил, как бы он это реализовал.это тупой вопрос и тупое "решение". Делать множественное наследование в C# нет нужны, я не знаю не 1 причины, зачем мне было бы это нужно.мне вот было нужно.
например, есть три класса, один реализует состояние объекта, другой свойства и методы списка, третий свойства и методы дерева. нужно, чтобы один объект реализовывал состояние и список, другой состояние и дерево, третий список и дерево без состояния. множественное наследование позволяет как угодно жонглировать этими наборами поведений, а в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка. при этом было несколько списков, которым в общем-то не было нужды тормозить, унавоживая базу своими состояниями.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249371
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesДелать множественное наследование в C# нет нужны,

скорее - множественного наследования нет и с этим следует смириться.

то что оно тебе не нужно - не означает, что оно не нужно никому.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249386
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Специально же уходили от этого, создавая C#. Кому не нравиться, может перейти на плюсы, питон или перл!
...
Рейтинг: 0 / 0
Множественное наследование
    #39249400
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Antonariyа в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка
А в реальности надо было сделать в одном классе: состояние объекта, свойства и методы списка, свойства и методы дерева.

Потому что никакого выигрыша от реализации этого в трех классах нет.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249404
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyнапример, есть три класса,
частенько потребность возникает при реализации COM- объектов, например фильтров DirectShow

интерфейсы, что должен реализовать фильтр имеют достаточно полные реализации в базовых классах.
проще не связываться с c# и писать на c++ (и лишиться ряда преимуществ, что даёт c# при написании этих фильтров)
...
Рейтинг: 0 / 0
Множественное наследование
    #39249413
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа в реальности мне пришлось

Есть паттерны, которые помогут решить такую задачу
...
Рейтинг: 0 / 0
Множественное наследование
    #39249433
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Antonariyа в реальности мне пришлось наследовать состояние от базового класса, список от состояния, а дерево от списка
А в реальности надо было сделать в одном классе: состояние объекта, свойства и методы списка, свойства и методы дерева.

Потому что никакого выигрыша от реализации этого в трех классах нет.а в реальности существует сотня классов, часть из которых списки, часть деревья, часть и то и другое, часть ни то ни сё, и кому-то из них нужно сохранять состояние, а кому-то нет. тащить весь хлам в каждый класс нахрен не надо, и нефиг, например, дереву отсвечивать методами списка, которые ему ни к селу не к городу.

выигрыш в том, что класс не вводит разработчика в заблуждение, показывая методы, которые на самом деле не работают.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249435
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisAntonariyа в реальности мне пришлось

Есть паттерны, которые помогут решить такую задачуесть костыли, которые помогают калеке кое-как хромать.
...
Рейтинг: 0 / 0
Множественное наследование
    #39249462
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyвыигрыш в том, что класс не вводит разработчика в заблуждение, показывая методы, которые на самом деле не работают.
Если используешь студию
EditorBrowsableAttribute + ObsoleteAttribute
...
Рейтинг: 0 / 0
Множественное наследование
    #39249508
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyPallarisпропущено...


Есть паттерны, которые помогут решить такую задачуесть костыли, которые помогают калеке кое-как хромать.

Ну эт самое, не плодите калек
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Множественное наследование
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]