Scala:具有特征的抽象类实例化?

时间:2014-10-26 09:18:03

标签: scala

本书中的示例代码:

abstract class Check {
  def check():String = "Checked Application Details... "
}
trait EmploymentCheck extends Check{
  override def check():String = "Check Employment ... " + super.check()
}

val app = new Check with EmploymentCheck

让我感到困惑的是new Check,我们如何实例化一个抽象类?为什么它会在with EmploymentCheck下工作?

2 个答案:

答案 0 :(得分:4)

new Check with EmploymentCheck生成Check的匿名具体子类。没有实例化抽象类。

scala> app.getClass
res0: Class[_ <: EmploymentCheck] = class $anon$1

答案 1 :(得分:1)

您要实例化的类型是Check with EmploymentCheck而非CheckCheck with EmploymentCheck不是抽象的,因为抽象成员check已由EmploymentCheck填写。