看起来Traits可以完全取代接口,抽象基类,混合和多重继承,只留下Traits和具体的继承。
这是意图吗?
如果你有特征,你应该使用哪些其他代码构造结构?
(角色是Traits的Perl名称。)
答案 0 :(得分:2)
至少对于Perl的Moose来说,没有接口,所以角色明显包含那些,通常也是mixin。我会说抽象基类仍然存在一个案例。角色可以被视为做的对象,其中类是 。
通过这种推理,仍然可以有效地使用抽象基类。 URL就是一个例子。可以很容易地为URL提供抽象基类。 IO流可能不同,可能更好地作为角色,因为它定义了事物的行为而不是它们的行为。
但是,在使用角色时,我还没有看到任何明确需要来自多个类的真正多重继承。
答案 1 :(得分:1)
此时我没有使用接口或抽象类,但是mixins和多继承实际上是由
啊,我的评论反映了 Scala - 我没有意识到你用多种语言标记了这一点。
答案 2 :(得分:0)
当你实现特质时;它消耗了一个classe。 所以不论表现力如何;您仍然可以使用遗留构造来防止jar中的类爆炸(以及开始时间)。
我让其他人回答有关表达性的问题:)
答案 3 :(得分:0)
我在这里只谈论Scala ......
阅读this。