The very interesting feature of traits is possibility is dynamic mixin with other object. Why I’ve named it „dynamic”?. Because you can add trait not only to class but also to instance. It’s powerful feature that can change functionality of a class on the fly.

For example:
We have trait with complex mwthod. This trait is mixed into used class. Problem: In few cases we want to change the functionality of the implemented method.

What to do?
We have to make another trait that will be changed with default one.

ADebugger is default trait.

More to read: