by shigemk2

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

Scalaのトレイト

ENSIMEやめた。

多重継承はできないけど、トレイトを使うことで複数のトレイトをミックスインできる。

scala> trait Programmer {
     |   def coding = println("コーディングします")
     | }
defined trait Programmer

scala>

scala> // クラスが明示的に継承を行わない場合、extendsを使用してトレイトをミックスイン

scala> class Person(val name: String) extends Programmer
defined class Person

scala>

scala> val p = new Person("taro")
p: Person = Person@fd551eb

scala>

scala> p.coding
コーディングします

scala>

scala> trait Designer {
     |   def design = println("デザインします")
     | }
defined trait Designer

scala>

scala> // ほかのクラス/オブジェクトを継承する場合、withキーワードでトレイトをミックスインする

scala> val p = new Person("taro") with Designer
p: Person with Designer = $anon$1@4142991e

scala>

scala> p.coding
コーディングします

scala>

scala> p.design
デザインします