Scala: ¿cómo referirse al tipo de una clase extendida en una superclase?

¿Hay alguna manera de definir un tipoT en Parent tal queT siempre se convertirá en el tipo real de la clase extendida (en este casoChild)?

EnParent, Quiero hacer cumplir / declararT ser siempre el tipo extensor, como si hubiera escritotype T="type_of_the_extending_class" en cada clase que se extiende sin escribir las líneastype T=Child1 enChild1 etc.

Por lo tanto, el método Child1 solo debe aceptar objetos Child1 como parámetro y el método Child2 solo debe aceptar objetos Child2. ¿Hay una manera más simple de hacer cumplir esto? ¿Hay alguna manera sin escribir?type T=ChildX en cadaChildX clase ? ¿Hay alguna manera sin este repetitivo?

He estado buscando una solución en los libros de Scala pero no encontré ninguna.

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")
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta