Traits are a fundamental unit of code reuse in Scala. Trait encapsulates method and field definitions, which can be reused by mixing into classes.
Two most important concept about Traits are :-
– Widening from thin interface to rich interface
– Defining stackable modifications.
There are some rather powerful things you can do with traits in Scala, though it’s important to be careful not to overdo it.