Singleton对象扩展超类并混合特征意味着什么?

时间:2017-08-29 03:12:11

标签: scala

我正在阅读Scala编程,在第4章中,我遇到了以下几行,我无法理解

  

单例对象扩展了超类,可以混合特征。鉴于每个单例对象是其超类和混合特征的实例,您可以通过这些类型调用其方法,从这些类型的变量引用它,并将其传递给期望这些类型的方法。

我知道的事情: 1)单例对象是写入静态方法的地方(对应于java) 2)特征就像界面

请解释上述行,如果可能,请举例说明。 此外,对象块下的变量是否也是静态的?

1 个答案:

答案 0 :(得分:3)

基本上,该行只是声明单个对象(使用object关键字定义)可以像普通的对象实例一样传递。

例如,请考虑以下代码

scala> trait X
defined trait X

scala> def doSomething(x: X) = { println("Something") }
doSomething: (x: X)Unit

scala> object Y extends X
defined object Y

scala> doSomething(Y)
Something

scala> class Z extends X
defined class Z

scala> doSomething(new Z)
Something