scala> trait A { def p: Unit } defined trait A scala> trait B extends A { def p = println("b") } defined trait B scala> trait C extends A { def p = println("c") } defined trait C scala> class D extends B with C { override def p = { super[B].p } } defined class D scala> new D().p b