两个层次结构中具有相同方法的超行为

时间:2014-08-25 03:11:47

标签: scala

有这些特征和课程:

 trait A {
    def print() {
      println("A")
    }
  }

  trait B extends A {
    override def print() {
      println("B")
      super.print()
    }
  }
  trait C extends A {
    override def print() {
      println("C")
      super.print()
    }
  }

  class H {
    def print() {
      println("H")
    }
  }

  class X extends H with B with C {
    override def print() {
      println("X"); super.print()
    }
  }

从X对象调用print:

  val x = new X                                   
  x.print   

我得到的印刷是:

X
C
B
A

H class中的打印方法开始,是否有办法在X class中获取打印方法?

我看到特征A,B和C属于一个层次结构而H属于另一个层次结构。在这两个层次结构中,我们都有print方法。让class X扩展这两个层次结构后,我认为必须有一种方法可以从class H到达打印方法。毕竟,class X被定义为“class X extends H ....”。

我想我在这里缺少一些重要的东西;我想我不是很了解它。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:3)

您正在寻找super[H].print()

您可以找到答案/谷歌线性化以查看mixins之后的层次结构。

http://www.artima.com/pins1ed/traits.html