title: Clarification on how scala trait and subclass overriding combine
body: <p>Could someone confirm that I understand my testing below? It seems that when you add a trait in Scala to a class, that trait become the <code>super</code> for that class if you reference <code>super.symbol_defined_in_trait</code>. If the trait itself extends a base class, then the trait's <code>super</code> becomes the original implementation. Did I mess up or miss anything big? </p>
  
  <pre><code>class Base {
    def doStuff = println("Base did stuff")
  }
  
  trait WrapBase extends Base {
    override def doStuff = {
      println("WrapBase did stuff"); 
      super.doStuff
    }
  }
  
  class Sub1 extends Base
  
  class Sub2 extends Base with WrapBase
  
  class Sub3 extends Base {
    override def doStuff = {
      println("Sub3 did stuff"); 
      super.doStuff
    }
  }
  
  class Sub4 extends Base with WrapBase {
    override def doStuff = {
      println("Sub4 did stuff"); 
      super.doStuff
    }
  }
  
  class Sub5 extends Base with WrapBase {
    override def doStuff = {
      println("Sub5 did stuff"); 
    }
  }
  </code></pre>
  
  <p>This testing prints out: </p>
  
  <pre><code>scala&gt; (new Sub1).doStuff
  Base did stuff
  
  scala&gt; (new Sub2).doStuff
  WrapBase did stuff
  Base did stuff
  
  scala&gt; (new Sub3).doStuff
  Sub3 did stuff
  Base did stuff
  
  scala&gt; (new Sub4).doStuff
  Sub4 did stuff
  WrapBase did stuff
  Base did stuff
  
  scala&gt; (new Sub5).doStuff
  Sub5 did stuff
  </code></pre>