trait Tr0 { def m1 = println("Tr0!") } trait Tr1 extends Tr0 { override def m1 = { super.m1 println("Tr1!") } } trait Tr2 extends Tr0 { override def m1 = { super.m1 println("Tr2!") } } class Cl12 extends Tr1 with Tr2 { override def m1 = { super.m1 println("Cl12!") } } object Test01 { def main(args:Array[String]) = { var t:Tr0 = new Cl12 t.m1 } }