scala trait混入次序问题

代码:https://gist.github.com/3031209
问题描述:
   当一个类 mix-in 两个 trait的时候
   那么这个类的实例去执行一个方法(这个方法两个trait里面都存在)
那么这个方法 到底该选择哪个来执行呢
  
   class MyIntQueue extends BasicIntQueue with Doubleling with filtering{}

   mix-in 两个 trait

   trait Doubleling extends IntQueue{  
      abstract override def put(x: Int) {    
           super.put(x*2)
      }
   }
  

   trait filtering extends IntQueue{
      abstract  override def put(x:Int){     
          if(x>0)         
             super.put(x) 
      }
   }

   main 中
       val bq = new MyIntQueue()        
       bq.put(-23)        
   请问 为什么-23 被 trait filtering拦截带了 而不是去执行trait Doubleling 
    粗略地说,越靠近右侧的特质越先起作用。
    当你调用带混入的类的方法时,最右侧特
    质的方法首先被调用。如果那个方法调用
    了super,它调用其左侧特质的方法,以此类推

你可能感兴趣的:(scala,trait,混入顺序)