内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
可以在具有如下特征的类上更改方法的实现:
trait Abstract { self: Result => override def userRepr = "abstract" } abstract class Result { def userRepr: String = "wtv" } case class ValDefResult(name: String) extends Result { override def userRepr = name } val a = new ValDefResult("asd") with Abstract a.userRepr
在这里可以获得实时代码:http://www.scalakata.com/52534e2fe4b0b1a1c4daa436
trait Abstract { self: Result => override def userRepr = "abstract" + self.userRepr }
或
trait Abstract { self: Result => override def userRepr = "abstract" + super.userRepr }
abstract override
特征
trait Abstract extends Result { abstract override def userRepr = "abstract " + super.userRepr } abstract class Result { def userRepr: String = "wtv" } case class ValDefResult(name: String) extends Result { override def userRepr = name } val a = new ValDefResult("asd") with Abstract a.userRepr
在这里可以获得实时代码:http://www.scalakata.com/52536cc2e4b0b1a1c4daa4a4