我读了很多关于特质的文章,但我确定我错过了这里的一些东西。我明白它们对抽象类有不同之处,但它们与抽象类的差别似乎对我来说很小。为什么不把特征和抽象类组合起来只是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)。 –