by shigemk2

当面は技術的なことしか書かない

Traitについて復習したい人生だった

第9章:Scalaのトレイト(trait) - Qiita

Javaでいうと、メソッドを実装できるインターフェイスです、って言われたって、Javaがわからないんで知らんがな。

/**
 * 同じメソッド名を持つトレイトとクラス
 */
trait TraitPrint {
  def print() = println("TraitPrint")
}
class ClassPrint {
  def print() = println("ClassPrint")
}

object TraitSample extends App {
  // トレイトは直接使えず、ミックスインしてクラスを作らないといけない。
  // val t = new TraitPrint
  // t.print
  // トレイト継承元を指定してメソッドを呼び出す
  val print = new ClassPrint with TraitPrint {
    override def print() = {
      super.print()                // => TraitPrint
      super[TraitPrint].print()    // => TraitPrint
      super[ClassPrint].print()    // => ClassPrint
    }
  }
  print.print
}