1. notation
Scala uses _ for importing all classes in a package.
2. case class
in akka actor's message handler, the first thing we need to do is to recognize the type, so pattern matching applied, in java, we use if-else instanceof to do it, in scala, it's simplified. case class is born for pattern matching(like switch sentence in java), very elegant.
Quoted from <scala in action>: Case classes are useful when it comes to building immutable classes, particularly in the context of concurrency and data transfer objects. Case classes also allow Scala to bridge the gap between functional programming and OOP in terms of pattern matching.
3. trait
Traits are similar to abstract classes with partial implementation.