24.08.2009, 13:29
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Kolyaj
|
Рано мне еще автобиографию писать. )))
|
Какие все стеснитильные
|
|
25.08.2009, 19:14
|
|
L
|
|
Регистрация: 16.08.2009
Сообщений: 416
|
|
Есть идея про мн наследование просто использовать расширение функций вообще без наследование а фабрикой объектов
__________________
Лови позитив
|
|
25.08.2009, 19:56
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Я никогда не сталкивался с задачами, где рационально было бы применить только множественное наследование. "Подмиксовки" в JavaScript можно делать и по-другому (ведь у нас динамическое ООП), а в большинстве других задач и обычной схемы наследования достаточно.
Да и вообще я схему себе не очень представляю, если например (не касаясь JavaScript) один класс наследует два других класса, которые имеют одинаковые имена методов, то что происходит? Простое перекрытие, или образуются "суб-пространства" имен?
Последний раз редактировалось Андрей Параничев, 25.08.2009 в 19:59.
|
|
26.08.2009, 00:35
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Андрей Параничев
|
Я никогда не сталкивался с задачами, где рационально было бы применить только множественное наследование. "Подмиксовки" в JavaScript можно делать и по-другому (ведь у нас динамическое ООП), а в большинстве других задач и обычной схемы наследования достаточно.
|
множественное наследование, как я понимаю, имеет смысл для наследования реализации и немного проще других вариантов
Сообщение от Андрей Параничев
|
Да и вообще я схему себе не очень представляю, если например (не касаясь JavaScript) один класс наследует два других класса, которые имеют одинаковые имена методов, то что происходит? Простое перекрытие, или образуются "суб-пространства" имен?
|
это, имхо, скорее либо из области теории (если разумно его применять проблем не будет), либо из больших древних или запущенных проектов
|
|
26.08.2009, 00:43
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от Андрей Параничев
|
которые имеют одинаковые имена методов, то что происходит?
|
Насколько я в курсе, это основная проблема множественного наследования, никак не могут выяснить, что именно должно происходить, но вроде какие-то логичные варианты там есть.
|
|
26.08.2009, 05:48
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Riim
|
Насколько я в курсе, это основная проблема множественного наследования
|
я бы сказал, что это самый популярный аргумент. В википедии на первом месте сложность и я тоже так думаю В общем множественное наследование - замечательный способ прострелить себе ногу
|
|
26.08.2009, 10:39
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от x-yuri
|
множественное наследование - замечательный способ прострелить себе ногу
|
Думаю на этом можно закончить
|
|
26.08.2009, 11:36
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Множественное наследование - это шаг к усилению абстракции и упрощению реюза кода (действительно, раз научились наследовать код от одного блока, давайте научимся сразу от десяти - удобный способ повторно использовать этот код). Однако, имеет свои недостатки (поэтому, и не прижился во многих языках), одна из которых (и, возможно, основная) - Diamond problem (то, о чём спрашивал Андрей Параничев): решение зависит от реализаций, но в целом, в теории, этот алгоритм называется Method resolution order (порядок разрешения имён методов), или линеаризацией - C3 linearization - суть: выстроить (линеаризовать) дерево методов так, чтобы не возникло конфликтов имён (т.е превратить в цепь).
Альтернативой множественному наследованию являются интерфейсы и примеси (ну это и так все знают ).
Последний раз редактировалось Dmitry A. Soshnikov, 26.08.2009 в 11:38.
|
|
26.08.2009, 17:42
|
|
|
|
Регистрация: 27.12.2008
Сообщений: 4,201
|
|
Сообщение от Dmitry A. Soshnikov
|
Множественное наследование - это шаг к усилению абстракции и упрощению реюза кода (действительно, раз научились наследовать код от одного блока, давайте научимся сразу от десяти - удобный способ повторно использовать этот код)
|
а где тут усиление абстракции?
Сообщение от Dmitry A. Soshnikov
|
Альтернативой множественному наследованию являются интерфейсы и примеси (ну это и так все знают ).
|
т.е. это фактически как составляющие наследования: наследование интерфейса и наследование реализации
p.s. еще можно почитать
http://phpclub.ru/talk/showthread.ph...E2%E0%ED%E8%E5
http://phpclub.ru/talk/showthread.ph...E2%E0%ED%E8%E5
|
|
26.08.2009, 17:56
|
Профессор
|
|
Регистрация: 25.02.2008
Сообщений: 707
|
|
Сообщение от x-yuri
|
а где тут усиление абстракции?
|
Можно сказать, что объект D включает в себя сразу 3 объектов (A, B,C); при этом реализация объектов А, B, C может быть не столь важна при абстрактном описании объекта D.
|
|
|
|