我讀了很多關於特質的文章,但我確定我錯過了這裏的一些東西。我明白它們對抽象類有不同之處,但它們與抽象類的差別似乎對我來說很小。爲什麼不把特徵和抽象類組合起來只是Scala中的一個概念 - 一種具有多繼承性的抽象類(有點像C++,我猜 - 但我從來沒有學過C++)。奧德斯基不這麼做的原因是什麼?爲什麼Scala特徵和抽象類不統一?
0
A
回答
0
我想一個很大的區別是,抽象類只能一次擴展一個特徵,而你可以將它們組合起來。有幾種基於特徵的模式用於組成功能,初始化或注入。
大特性中缺少的東西,就是接收參數的能力,你可以用抽象類做到這一點。但是這種差異會在下一個版本中消失,因爲每個dotty文檔都可以使用特質來處理所有事情。
-1
至少現在社區內已經討論過這些功能,並且已經有了很好的舉措來確保正確討論添加內容。
相關問題
- 1. Scala中的特徵與抽象類
- 2. 抽象類的特徵
- 3. Scala抽象類/特徵與返回子類型的方法
- 4. 爲什麼Scala不會推斷特徵類型參數?
- 5. 如何比較Scala特徵中的有序抽象類型?
- 6. 使用特徵優於抽象類的優點是什麼?
- 7. 在Scala中重寫特徵和抽象方法
- 8. 爲什麼Scala編譯器不會與抽象類型
- 9. 爲什麼ClassLoader是一個抽象類?
- 10. 爲什麼HttpServletRequestWrapper類不是抽象的
- 11. 什麼是Scala的可比特徵?
- 12. 含有抽象val成員的嘲諷Scala特徵
- 13. Scala:爲什麼自我類型特徵不能看到構造函數參數
- 14. 爲什麼在接口爲什麼不能在抽象類
- 15. 爲什麼Scala中的隱式類必須駐留在另一個特徵/類/對象中?
- 16. 實現抽象行爲只是一次...特徵作爲契約,抽象類作爲具體幫手
- 17. 繼承時抽象類和非抽象類有什麼區別
- 18. 將類限制爲Scala中的特徵和結構子類型
- 19. Scala設計幫助,抽象類或特徵上的模式匹配
- 20. 如何以編程方式生成擴展註釋特徵的抽象Scala類?
- 21. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 22. 爲什麼str不執行ImmutableVector特徵?
- 23. 爲什麼抽象類和接口不能被實例化?
- 24. 爲什麼我的子類被認爲是一個抽象類?
- 25. Scala和C++特徵之間有什麼關係
- 26. Scala抽象類型和多態性
- 27. 爲什麼HttpContext是一個抽象類而不是接口?
- 28. 爲什麼IDisposable是一個接口,而不是抽象類?
- 29. 爲什麼java.sql.Statement是一個接口而不是抽象類?
- 30. Scala:將特徵方法推遲到父特徵對象中的隱式類
請參閱[這個答案](http://stackoverflow.com/a/15330312/1870803)這可能會回答你的一些傳遞思想。 –
抽象類適用於Java,特性不... – Nimrod007
對於它的價值,([Dotty](https://github.com/lampepfl/dotty)),下一代Scala將它們統一起來。參見[SIP 25](http://docs.scala-lang.org/sips/pending/trait-parameters.html)。 –