Scala: как ссылаться на тип расширяющего класса в суперклассе?

Есть ли способ определить типT у родителя такой, чтоT всегда будет фактическим типом расширяющего класса (в этом случаеChild)?

ВParentЯ хочу обеспечить / объявитьT быть всегда расширяющим типом, как если бы я написалtype T="type_of_the_extending_class" в каждом фактическом расширяющем классе, не записывая строкиtype T=Child1 вChild1 и т.п.

Таким образом, метод Child1 должен принимать только объекты Child1 в качестве параметра, а метод Child2 должен принимать только объекты Child2. Есть ли более простой способ обеспечить это? Есть ли способ без написанияtype T=ChildX в каждомChildX учебный класс ? Есть ли способ без этого шаблона?

Я искал решение в книгах Scala, но не нашел ни одного.

abstract class Parent{
  type T<:Parent
  def method(t:T) 
}

class Child1 extends Parent{
  type T=Child1
  override def method(t:T)=t.child1method
  def child1method=println("child1's method")
}

class Child2 extends Parent{
  type T=Child2
  override def method(t:T)=t.child2method
  def child2method=println("child2's method")
}