Scala:是Trait导入的所有方法还是仅使用的方法?

时间:2016-10-24 16:06:55

标签: scala dependency-injection traits

我想知道Trait的所有方法是否都是在扩展此Trait的类中导入的,还是仅用于已使用的方法?

依赖注入?

1 个答案:

答案 0 :(得分:1)

除了标记为private的方法之外,扩展实体都可以使用其他所有方法。扩展实体可以选择覆盖或保留未实现的,在这种情况下,该实体的子级必须处理它。

trait A {
 private def a: Int = 1 //not available
 protected def b: Int = 2 //available inside extending entity
 def d: Int = 3 //available everywhere 
}

class B extends A {}
val x = new B()

x.a //error

x.b //error

x.d //prints 3

来依赖注入

假设A和B是两个不保持父/子关系的接口或特征。

如果您将一个实体注入其他实体。该实体的所有公共方法都可以被其他

访问