Lic. Edgar J. De Cleene wrote:
Please I beg a clear "why us think ..." page somewhere. Why some members think inheritance is not enough ?
Take the example we've been discussing, ClassDescription. It is an abstract class. Why does it exist? to share behavior between Class and Metaclass. Why is this behavior not put in Behavior, which is already shared by those? because someone might want to inherit from Behavior, to create a runnable class, that does not have all this extra detail.
And what if we want a non-runnable class that has all the ClassDesc detail? that's tough, under single inheritance, we can't do that.
And why does the structure of Class, that any newbie might need to explore to understand the image he uses, have to be constrained by the structural considerations of expert wanting to subclass behavior? that's the way inheritance works. It forces the inheritance, though some other design might be more understandable.
So traits give us a different mechanism, that allows to reuse stuff from any class, without forcing things so specifically. As an addition to inheritance, they do allow some new options. According to some, they might be a good replacement for inheritance.
Anyway, for more detail, read the papers in the trait papers page.
Daniel