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: