Scala case class extending Product with Serializable
<p>I am learning scala and tried following form Scala Cookbook:</p>

<pre><code>trait Animal
trait FurryAnimal extends Animal
case class Dog(name:String) extends Animal
case class Cat(name:String) extends Animal
</code></pre>

<p>Now when I did following as :</p>

<pre><code>val x = Array(Dog("Fido"),Cat("Felix"))
</code></pre>

<p>it show result as :</p>

<pre><code>x:Array[Product with Serializable with Animal] = Array(Dog(Fido),Cat(Felix))
</code></pre>

<p><em>Although I know that a case class is mixed in with Product trait</em></p>

<p>What I am not getting is : <code>Product with Serializable with Animal</code></p>

<p><strong><em>As per my understanding Product has something to do with Pattern matching</em></strong></p>

<p>I did google it but didn't get anything.Please Help to get me the concept in detail.</p>

<p>Thanks </p>