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

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

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
}
Другие вопросы по тегам