Bridgeパターン。
trait Color {
def getColor: String
}trait White extends Color {
def getColor = "白い"
}trait Pink extends Color {
def getColor = "桃色の"
}abstract class Animal extends Color {
println(this)
override def toString = "私は" + getColor
}abstract class Mammal extends Animal {
override def toString = super.toString + "獣"
}abstract class Bird extends Animal {
override def toString = super.toString + "鳥"
}object Main {
def main(args: Array[String]) = {
val whiteBear = new Mammal with White // 私は白い獣
val swan = new Bird with White // 私は白い鳥
val pig = new Mammal with Pink // 私は桃色の獣
val flamingo = new Bird with Pink // 私は桃色の鳥
}
}