54.scala编程思想笔记——使用特征
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50447607
源码下载连接请见第一篇笔记。
在Scala中,可以将模型划分为恰当的部分。而有些语言则强制进行笨拙的抽象。
特征以及他们的混合是这些工具中最强大的,特征不仅使得语法变得优雅而有意义,并且可以防止代码重复。
因此:
n 优先是使用特征而不是更具体的类型
n 将模型划分成相互独立的部分
n 延迟具体化
特征和抽象类的主要差别是特征不能有构造器参数。
例如:
importcom.atomicscala.AtomicTest._
traitAerobic {
val age:Int
def minAerobic = .5 * (220 - age)
def isAerobic(heartRate:Int) =
heartRate >= minAerobic
}
traitActivity {
val action:String
def go:String
}
classPerson(val age:Int)
classExerciser(age:Int,
val action:String = "Running",
val go:String = "Run!") extends
Person(age) with Activity with Aerobic
val bob =new Exerciser(44)
bob.isAerobic(180)is true
bob.isAerobic(80)is false
bob.minAerobicis 88.0