具有相同名称的Scala对象和特征

Man*_*oid 6 scala object traits

在 Scala 中,一个类和一个对象可以是同伴(同名,同文件)

我遇到了 Scala 源代码,其中有一个文件,其中定义了一个 trait 和 object,并且两者都具有相同的名称,但 object 没有扩展 trait。

这个款式好吗?

San*_*hit 6

是的,在 trait 或 object 同名对象成为伴生对象的情况下,您可以在下面的代码中看到您可以访问 class 和 trait 中的私有成员两种情况

特征

trait Simple {
private def line = "Line"
}

object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}

Simple.lineObj
Run Code Online (Sandbox Code Playgroud)

班级

class Simple {
private def line = "Line"
}

object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}

Simple.lineObj
Run Code Online (Sandbox Code Playgroud)

  • 特质可以实例化吗? (2认同)