trait Logging {
override def toString = "Logging"
}
class A extends Logging {
override def toString = "A->" + super.toString
}
trait B extends Logging {
override def toString = "B->" + super.toString
}
trait C extends Logging {
override def toString = "C->" + super.toString
}
class D extends A with B with C {
override def toString = "D->" + super.toString
}
def main(args: Array[String]) {
val d = new D()
//print out "D->C->B->A->Logging"
println(d)
}
The above code summarizes how trait works in Scala.