metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-04-11 12:47 pm

Правильное множественное наследование

[...]

Описана штука, которой мне дико не хватает сейчас в дотнете. :)

Ее, по идее, можно будет сымитировать в .NET 3.5, с использованием extension methods, а пока (и в дельфи тоже) приходится извращаться, собирая несколько объектов в один объект-владелец, предоставляющий нужные интерфейсы и выдающий при необходимости внутренние объекты.

[identity profile] pete-by.livejournal.com 2008-04-11 10:48 am (UTC)(link)
Что-то близкое реализовал в Java - dynamic inheritance with dynamic dispatch. В статически-типизированной java, тоже нет множественного наследования, mixins и других возможностей, которые в динамических языках стандартны. Но через proxy-based AOP подобное реализуется (у меня без method-resolution).

[identity profile] lemantar.livejournal.com 2008-04-11 11:15 am (UTC)(link)
множественное наследование - зло. не имхо.

[identity profile] metaclass.livejournal.com 2008-04-11 11:40 am (UTC)(link)
Зло, очевидно. В функциональных языках это хотя бы комбинаторами и функциями высшего порядка какими-нибудь обойти можно, а в приземленных жабах и дотнетах приходится вертеть интерфейсами и придумывать безумные паттерны.

[identity profile] lemantar.livejournal.com 2008-04-11 11:50 am (UTC)(link)
Безумны не паттерны, а пример по вашему линку.
Создан класс "носорог", унаследованый от "животное". И вот надо добавить ему возможность "летать". Сидит бедолага и муется вопросом - как ему ещё унаследоваться и от бабочки. :-)
Но спрашивается - ЗАЧЕМ? Создай искпользуй класс "самолет", погрузи в него "носорог" и пусть себе летит! :-) А наследовать бегемотов от бабочек это маразм.