特质基础知识
这是 Scala 中最基本的特征版本。
trait Identifiable {
def getIdentifier: String
def printIndentification(): Unit = println(getIdentifier)
}
case class Puppy(id: String, name: String) extends Identifiable {
def getIdentifier: String = s"$name has id $id"
}
由于没有为特征 Identifiable
声明超类,因此默认情况下它从 AnyRef
类扩展。因为在 Identifiable
中没有提供 getIdentifier
的定义,所以 Puppy
类必须实现它。然而,Puppy
继承了 Identifiable
的 printIdentification
的实现。
在 REPL 中:
val p = new Puppy("K9", "Rex")
p.getIdentifier // res0: String = Rex has id K9
p.printIndentification() // Rex has id K9