Mixins

abstract class A {
  val message: String
}
class B extends A {
  val message = "I'm an instance of class B"
}
trait C extends A {
  def loudMessage = message.toUpperCase()
}
class D extends B with C

val d = new D
println(d.message)  // I'm an instance of class B
println(d.loudMessage)  // I'M AN INSTANCE OF CLASS B

It is traits which are used to compose a class.

Mixins → are a → Traits.

Mixins — Structure map

Clickable & Draggable!

Mixins — Related pages: