我開始與斯卡拉,我發現這有點奇怪。在java中我可以做這樣的事情:爲什麼不擴展其他類的類必須擴展特性? (與不工作)
interface Foo{}
public class Bar implements Foo{}
我試圖做斯卡拉類似的東西,但它不工作:
trait Foo;
class Bar with Foo; // This doesn't work!
我必須使用「擴展」的關鍵字:
class Bar extends Foo; // This works OK!
現在,這很好,但它不是我想要的。
奇怪我注意的是,鑑於斯卡拉每一個類從AnyRef擴展(請參閱從scala-lang.org這一形象:http://www.scala-lang.org/sites/default/files/images/classhierarchy.png)另一件事我可以做到這一點:
class Bar extends AnyRef with Foo; // This works too!
所以,我失去了什麼?如果不擴展它,沒有意義使用特質?
謝謝!
很好的解釋,謝謝! – santiagobasulto