我们说private[feature] trait ImputerParams extends Params
。
然后我class Imputer extend ImputerParams
。
我的问题是我需要在Params
中实施所有方法吗?根据Scala的文档,我应该。但是,在我阅读真实的生产代码时,我发现Imputer
没有实现Params
中的所有方法,并且效果很好。所以我很困惑。
如果我想了解更多信息,我应该阅读哪些主题?
答案 0 :(得分:4)
扩展特征的类必须实现所有抽象函数定义,即没有正文定义的函数。
但是,Scala中的特征可以包含具有完整实现的函数,然后不需要覆盖它们。
trait Foo {
def bar(): Int
def add(x: Int) = x + 1
}
在此示例中,扩展Foo
的类必须覆盖并实现bar
,而不是add
。