本书中的示例代码:
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
下工作?
答案 0 :(得分:4)
new Check with EmploymentCheck
生成Check
的匿名具体子类。没有实例化抽象类。
scala> app.getClass
res0: Class[_ <: EmploymentCheck] = class $anon$1
答案 1 :(得分:1)
您要实例化的类型是Check with EmploymentCheck
而非Check
,Check with EmploymentCheck
不是抽象的,因为抽象成员check
已由EmploymentCheck
填写。