title: Scala case class extending Product with Serializable
body: <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>