trait Req1 trait Req2 { def test = Console.println("Test") } trait Foo { val foo : Req1 } trait Bar { val foo : Req2 def test = foo.test } object Test extends Foo with Bar { object foo extends Req1 def main(argv : Array[String]) = test }