不实现子类中的所有方法

Joh*_*ass 1 oop inheritance abstract-class scala traits

假设我们有private[feature] trait ImputerParams extends Params.

那么我就有了class Imputer extend ImputerParams

我的问题是我需要实现所有方法吗Params?根据 Scala 的文档,我应该这样做。然而,当我阅读真正的生产代码时,我发现Imputer并没有实现 中的所有方法Params,并且它运行良好。所以我很困惑。

如果我想了解更多信息,我应该阅读哪些主题?

Kra*_*log 5

扩展特征的类必须实现所有抽象函数定义,即没有主体定义的函数。

然而,Scala 中的特征可以包含具有完整实现的函数,并且不需要重写它们。

trait Foo {
  def bar(): Int
  def add(x: Int) = x + 1
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,扩展的类Foo必须重写并实现bar,但不是add