不实现子类中的所有方法

时间:2017-11-01 04:40:26

标签: scala oop inheritance abstract-class traits

我们说private[feature] trait ImputerParams extends Params

然后我class Imputer extend ImputerParams

我的问题是我需要在Params中实施所有方法吗?根据Scala的文档,我应该。但是,在我阅读真实的生产代码时,我发现Imputer没有实现Params中的所有方法,并且效果很好。所以我很困惑。

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

1 个答案:

答案 0 :(得分:4)

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

但是,Scala中的特征可以包含具有完整实现的函数,然后不需要覆盖它们。

trait Foo {
  def bar(): Int
  def add(x: Int) = x + 1
}

在此示例中,扩展Foo的类必须覆盖并实现bar,而不是add