【发布时间】:2014-03-23 16:41:19
【问题描述】:
我在 Scala 中使用 mixin 和 trait,我遇到了一个小问题,我如何(不覆盖)从 mixin 访问类字段?
这是我的代码:
trait Friend {
def getHelp() = "Gets help"
}
trait Speak {
def speak(): String
}
class Person(var name: String) extends Speak with Friend {
override def speak() = s"Hello, I am $name"
}
class Dog(var name: String) extends Speak with Friend {
override def speak() = "woof woof!"
}
class Cat(var name: String) extends Speak {
override def speak() = "meow!"
}
真的没什么特别的,但现在我将Friend 混合到Cat 的对象中
val felix = new Cat("Felix") with Friend
println(felix.getHelp) // prints "Gets help"
我该如何写,而不是说“得到帮助”,而是说“菲利克斯得到帮助”?
也就是说,从name 字段中获取值而不必在类定义处扩展Friend? (我不希望Cat 的所有实例也成为Friend)
【问题讨论】: