まず、Traitとは、
・メソッドとプロパティの集合
・単一継承の制約を軽減
・継承とは関係なく、共通の特性、振る舞いを再利用出来る
・Javaのインターフェイスと同じように、複数のトレイトをミックスインする事が出来る
上記のような特徴がある。
簡単なサンプル、
・使用するトレイト
trait Mammal{ def getTemperature() = { } }
ex )普通に実装
case class Human extends Mammal(){ }
ex )メソッドをオーバーライドする場合は、overrideを加える
case class Human extends Mammal(){ override def getTemperature() = { } }
traitはインスタンスも可能
ex )
val mammal = new Mammal{}
Javaのインターフェイスとの大きな違いは、実装を持つ事が出来るという事。
実際に使用して、もう少し理解を深めよう。。
参考URL)
http://www.ne.jp/asahi/hishidama/home/tech/scala/trait.html