2011-09-23 9 views
21

私は他のいくつかの形質から実装された形質を持っています。これらの特性はそれぞれ、supertraitの動作をオーバーライドし、混入したクラスに、次のとおりです。スーパークラスの複数の特性の1つにアクセスするには?

trait T { 
    def name = "t" 
} 
trait T1 extends T { 
    abstract override def name = "t1" 
} 
trait T2 extends T { 
    abstract override def name = "t2" 
} 
class C extends T with T1 with T2 { 
    def printName = super.name 
} 

は今、クラスCに私は最後の混在での形質の動作ではありませんが、1つの動作をアクセスしたいですこれらの形質のうちの1つ。これは可能ですか?

答えて

26

特定の形質にスーパーコールを特化することが可能である:

class C extends T with T1 with T2 { 
    def printName = super[T1].name 
} 
+10

上記 'T1'が直接スーパー形質である場合にのみ可能です。 – axel22

+2

+1、聖なる煙は、この機能を知らなかった! – missingfaktor

+0

質問と回答、どちらも同じ人ですか? – Nawaz

関連する問題