Как получить доступ к одной из нескольких характеристик суперкласса?

У меня есть черта, которая реализована по некоторым другим признакам. Каждая из этих черт переопределяет поведение супертроя и смешивается с классом:

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

Можно запрограммировать супервызов на определенный признак:

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