trait Logged { def log(msg: String) } trait ConsoleLogger extends Logged { override def log(msg: String) = println("[LOG] " + msg) } abstract class Person(name: String) class Customer(n: String) extends Person(n) with Logged { log(s"Person $n created") } val a = new Customer("Patrick Jane") with ConsoleLogger