Что касается моего ограниченного знания Scala, классы случаев обычно используются для неизменяемых алгебраических типов данных и сопоставления с образцом. Следовательно, вместо создания «дочернего класса», вы, вероятно, должны вместо этого создать класс, который содержит «родительский» класс.
> case class MyParent(param: Int)
defined class MyParent
> case class MyChild(param: Int, parent: MyParent)
defined class MyChild
> def foo(c: MyChild) = c match {
case MyChild(p, MyParent(p2)) => println("p: " + p + ", p2 " + p2)
}
foo: (c: MyChild)Unit
> foo(MyChild(3, MyParent(4)))
p: 3, p2 4