gpt4 book ai didi

scala - 继承一个特质两次

转载 作者:行者123 更新时间:2023-12-03 13:31:31 24 4
gpt4 key购买 nike

这不起作用:

trait Trait
class Class extends Trait with Trait

编译器提示:
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^
<console>:8: error: trait Trait is inherited twice
class Class extends Trait with Trait
^

这样做:
trait Trait
class Abstraction extends Trait
class Implementation extends Abstraction with Trait

问题:
  • 为什么它有效?
  • 第二个片段有何不同? (关于双重继承问题)
  • 第二个片段或模式是否有用?
  • 最佳答案

    由于特征线性化,第二个片段有效。编译器会将特征组织成一个线性列表,以便 Trait只出现一次。我认为线性化是

    Implementation, Trait, Abstraction, ScalaObject, AnyRef, Any

    this chapter来自 Programming Scala 的一个很好的解释。

    这主要是为了对菱形继承(钻石问题)问题采取一致的方法,在这种情况下很有用。

    由于 Trait线性化后不能出现两次,写 Trait with Trait没有意义被禁止是有道理的。

    关于scala - 继承一个特质两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7230808/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com