2017-08-29 47 views
0

我讀的Scala和第4章編程,我碰到下面的線,我無法理解Singleton對象擴展超類和混合特性是什麼意思?

單一對象擴展超類,可以在性狀混合。鑑於每個單例對象都是其超類和混入特徵的實例,您可以通過這些類型調用它的方法,從這些類型的變量中引用它,並將其傳遞給期望這些類型的方法。

的資料我知道: 1)單一對象是其中靜態方法被寫入(對應於JAVA) 2)性狀是一樣的界面

請解釋上面的行,如果可能用一個例子。 另外,對象塊下的變量是否也是靜態的?

回答

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 
相關問題